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

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
There's two issues I think though fixing the first makes us no longer run into
the second.  The first is that I again forgot to mark a destination block
executable after marking an edge so ... (doh).

The second one is that when marking loop headers as not need iterating we
can face the situation (as with the CFG in this testcase) that a backedge
into its header is _not_ a latch of it but part of an outer irreducible
region which we may end up iterating and thus we need to continue iterating
the loop we try to mark not needing that.

Even though I lack a testcase for the latter issue I'll fix that as well.
(fixing only that results in endless iteration - sth you'd expect)

Reply via email to