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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
   Last reconfirmed|                            |2024-11-11
             Status|UNCONFIRMED                 |ASSIGNED
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
The issue is that we fail to hoist the m > 0 check out of the outer loop:

t.c:4:23: note: Considering guard 7 -> 6 in loop 1
t.c:4:23: missed: Block 5 has side effects

  <bb 5> [local count: 105119324]:
  # _10 = PHI <_8(4)>
  *_3 = _10;

I think the logic in find_loop_guard is a bit flawed and it checks too many
blocks for side-effects.

I'm testing a fix.

Reply via email to