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?

Reply via email to