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

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

  if (TREE_CODE (lhs) != SSA_NAME
      || gimple_could_trap_p (stmt))
    return MOVE_PRESERVE_EXECUTION;

But then LIM fails to check whether the exit of the nested loop is ever taken
(it infinitely loops).

Thus that LIM logic has a flaw.  It marks that block as always executed in the
outer loop.  Thus the bug is in fill_always_executed_in[_1].

A tiny bit academic as it requires a never terminating inner loop, but well.

Reply via email to