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.