https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77362
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Sebastian Pop from comment #8) > LIM in general is bad for loop transforms: it introduces loop carried > dependences. If we can move graphite before LIM that would solve some > problems. Yeah, but the user can write such dependences himself so ideally we have a way to undo them, like by using local scratch memory? So x_0 = 1; loop: # x_1 = PHI <x_0, x_2> ... x_2 = ...; goto loop; turns into mem = 1; loop: x_1 = mem; x_2 = ...; mem = x_2; goto loop; plus replacement of exit PHIs with loads. Would that help? Or does the new (non-aliased, loop invariant) memory location complicate things as well?