http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51246
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-11-24 08:25:40 UTC --- Created attachment 25907 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25907 gcc47-pr51246.patch I wonder whether we can't just adjust the assert here to also allow clobber on the rhs. Then <bb 2>: <bb 3>: c.0_1 = c; a = c.0_1; b = &c; c ={v} {CLOBBER}; <bb 4>: goto <bb 3>; is transformed into: <bb 2>: c.5_10 = c; <bb 3>: # c_lsm0.4_8 = PHI <c.5_10(2), c_lsm0.4_9(4)> c.0_1 = c_lsm0.4_8; a = c.0_1; b = &c; c ={v} {CLOBBER}; c_lsm0.4_9 ={v} {CLOBBER}; <bb 4>: goto <bb 3>; That makes it clear that we use uninitialized variable in the next iteration too.