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.