https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63224
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2014-09-12 Component|c |middle-end Blocks| |24639 Summary|False Positive for |false positive for |-Wmaybe-uninitialized at |-Wmaybe-uninitialized at |-Os, not -O2 |-Os (not -O2) with && | |transformed to & Ever confirmed|0 |1 --- Comment #9 from Manuel López-Ibáñez <manu at gcc dot gnu.org> --- (In reply to Manuel López-Ibáñez from comment #6) > I think this is PR56574, but we need to check the dumps to be sure. The dump > should be something like: test.c.NNNt.uninit1, you can get it with > -fdump-tree-all-all-lineno. According to this: + [Os.c : 8:8] # RANGE [0, 1] + _12 = s_4(D) == 2; + [Os.c : 8:18] # RANGE [0, 1] + _13 = c_1 == 0; + [Os.c : 8:13] # RANGE [0, 1] + _14 = _13 & _12; the same bug is involved, but this one is a bit more complicated because it is not clear that the uninit pass realizes that the c_5(D)(7) edge is guarded by s==0, so in that case _12==0 and c_1 doesn't matter.