https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121720

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #7)
> (In reply to Richard Biener from comment #6)
> > So the issue is not the rev. in question (well, it triggers it).  PRE should
> > still work since there is the unconditional dereference in the loop.  And it
> > does when we allow ANTIC_IN to grow again during iteration
> > (r8-7285-gec64ffc8501c20 installed something to limit this).
> > 
> > Of course it's testcase now still works, even w/o its fix.  I'll see to
> > understand if the issue in the old PR is now fixed by other means
> > (gcc.dg/torture/pr84830.c).
> 
> The issue is still there.  I'll make a gimple testcase out of it.

It's also a very unfortunate one, suffering from connect_infinite_loops_to_exit
making a very bad decision leading to 6 unvisited edges in a single CFG cycle.
I think that is also one reason for the oscillation - we basically intermangle
multiple ANTIC iterations this way.  This _might_ be not avoidable in general,
but the testcase is a regular loop where the fake exit edge was chosen badly
placed.

Reply via email to