------- Comment #12 from manu at gcc dot gnu dot org 2009-02-07 21:29 ------- This is a duplicate of 18501. CCP assumes y is always 23.
Reordering passes just changes the set of false negatives/positives. For example, if you move the warning before CCP, then you get a warning for this case: int f(int x) { int y; int x = 42; if (x == 42) y = 23; return y; } A more complete analysis is here: http://gcc.gnu.org/ml/gcc/2005-11/msg00028.html And some random ideas are here: http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings#problem_ccp How other compilers get this right? I don't know, but ideas and patches are welcome. *** This bug has been marked as a duplicate of 18501 *** -- manu at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- BugsThisDependsOn| |18501 Status|REOPENED |RESOLVED Resolution| |DUPLICATE http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30856