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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the issue is that we only update LC-SSA for uses in specific blocks
determined by unloop_loops and siblings.  This does not consider the
case where eliding a very innermost loop changes the nesting relation
of its outer and outer outer loop, making them siblings, and thus turning
a former valid LC-SSA PHI of the outer outer loop become a LC-SSA PHI
of the outer loop where the def is in the former outer outer loop and
thus the LC-SSA PHI is now misplaced (on the "wrong" exit).

In particular we are removing two exits of the outer loop in unloop ()
(those from the original innermost loop) and the 2nd places the outer
loop now on an exit edge of the outer outer loop.

Reply via email to