http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45122

--- Comment #7 from Alexandre Oliva <aoliva at gcc dot gnu.org> 2011-01-16 
08:28:36 UTC ---
Created attachment 22979
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22979
Patch that fixes (papers over?) the bug by compensating for the unsafe
assumption

Here's another alternative, that does not discard the unsafe optimization, but
instead attempts to make it safe.  Considering that the computed trip count
should only apply when the counter is exact, and that the other exit is taken
at the next trip, this patch compensates for the too-low trip count by
replacing the exact division by a rounded-up division, which gives us the
correct trip count for this particular loop.

Other cases in which we'd take another exit after more than one iteration would
presumably still fail, but I don't know enough about the loop infrastructure to
tell whether this possibility might arise.

Reply via email to