This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/71661] [7 Regression] wrong code at -O3


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).

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]