https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71661
Jeffrey A. Law <law at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |law at redhat dot com --- Comment #4 from Jeffrey A. Law <law at redhat dot com> --- I'm really just getting started looking at this one. I had hoped that this was the same issue as 71550, but instead is just looks related (as in there's another case where a pass collapses two loops into one and thus needs to invalidate the cached iteration information). What I've concluded so far is that we start with 3 loops, two of which are irreducible. Jump threading cleans things up ever-so-slightly turning one irreducible loop into a natural loop which is discovered by the loop infrastructure. That newly exposed natural loop is contained within the remaining irreducible loop. The header of the newly exposed natural loop is also the target of the "backedge" of the irreducible loop. My current theory is that CFG structure is confusing a later pass (possibly loop-ch as Jakub mentions in his comments).