Changeset - r24331:1e0caff78888
[Not reviewed]
master
0 1 0
TechGeekNZ - 4 years ago 2020-07-23 20:51:27
git@tech.geek.nz
Fix: GCC warns about possibly uninitialized data in signal.cpp

When compiling with '-Og', GCC warns about variables that are
initialized by reference in the condition of a 'while' loop.

This commit silences the warning by explicitly initializing the
variables in question to their respective 'invalid value' markers,
which will most likely be optimized out when the compiler realizes
the values are never used.
1 file changed with 7 insertions and 7 deletions:
0 comments (0 inline, 0 general)
src/signal.cpp
Show inline comments
 
@@ -268,10 +268,10 @@ static SigFlags ExploreSegment(Owner own
 
{
 
	SigFlags flags = SF_NONE;
 

	
 
	TileIndex tile;
 
	DiagDirection enterdir;
 
	TileIndex tile = INVALID_TILE; // Stop GCC from complaining about a possibly uninitialized variable (issue #8280).
 
	DiagDirection enterdir = INVALID_DIAGDIR;
 

	
 
	while (_tbdset.Get(&tile, &enterdir)) {
 
	while (_tbdset.Get(&tile, &enterdir)) { // tile and enterdir are initialized here, unless I'm mistaken.
 
		TileIndex oldtile = tile; // tile we are leaving
 
		DiagDirection exitdir = enterdir == INVALID_DIAGDIR ? INVALID_DIAGDIR : ReverseDiagDir(enterdir); // expected new exit direction (for straight line)
 

	
 
@@ -407,8 +407,8 @@ static SigFlags ExploreSegment(Owner own
 
 */
 
static void UpdateSignalsAroundSegment(SigFlags flags)
 
{
 
	TileIndex tile;
 
	Trackdir trackdir;
 
	TileIndex tile = INVALID_TILE; // Stop GCC from complaining about a possibly uninitialized variable (issue #8280).
 
	Trackdir trackdir = INVALID_TRACKDIR;
 

	
 
	while (_tbuset.Get(&tile, &trackdir)) {
 
		assert(HasSignalOnTrackdir(tile, trackdir));
 
@@ -474,8 +474,8 @@ static SigSegState UpdateSignalsInBuffer
 
	bool first = true;  // first block?
 
	SigSegState state = SIGSEG_FREE; // value to return
 

	
 
	TileIndex tile;
 
	DiagDirection dir;
 
	TileIndex tile = INVALID_TILE; // Stop GCC from complaining about a possibly uninitialized variable (issue #8280).
 
	DiagDirection dir = INVALID_DIAGDIR;
 

	
 
	while (_globset.Get(&tile, &dir)) {
 
		assert(_tbuset.IsEmpty());
0 comments (0 inline, 0 general)