http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55079
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED AssignedTo|unassigned at gcc dot |rguenth at gcc dot gnu.org |gnu.org | --- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-10 13:23:17 UTC --- Created attachment 28911 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28911 prototype patch The pattern we have is <bb 6>: _36 = i_33 + 1; _37 = a[i_33]; a[_36] = _37; i_39 = i_33 + 4294967295; if (i_33 != 0) goto <bb 7>; else goto <bb 11>; <bb 7>: _42 = i_39 + 1; _43 = a[i_39]; a[_42] = _43; and eventually adding an assert in bb7 that i_39 != 1 would help. But the only thing we try to add extra asserts for is stuff in the definition chain of comparison operands ... this OTOH is for stuff that uses comparison operands and live on the edge. Prototype patch attached, fixes comment#8 at least.