I get a spurious warning on code that can't possibly have an uninitialized reference; gcc should be able to figure it out just by propagating constants. The example is cut down from a larger program and is still a bit long, but is quite brittle: every substantive irrelevant change I make to the test case below eliminates the warning (such as removing the nitems field and testing against items instead, or removing the call to cons, or replacing freelist_alloc by malloc). In the output, everything got inlined, but it's a mess of spaghetti jumps that I can't decipher.
This bug happens identically in both gcc-4.2.1 and gcc-4.3.1.
gcc gcc-4-spurious-warning.c -W -Wall -O2 -S
spurious-warning.c: In function 'cause_warning':
spurious-warning.c:74: warning: 'h.min_item' may be used uninitialized in this function
This may be the same issue (or one of the two issues) of PR 36296. Although I would need to check the dumps before and after VRP.
Wuninitialized got some fixes in GCC 4.4, so we also need to test whether this has been fixed.
This is an dup of bug 36296.
This happens after SRAing of some variables which shows up that PR again.
*** This bug has been marked as a duplicate of 36296 ***