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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=42512

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
PR42512 is also related and its "fix" is even worse...  it's worse in that
it hides wrong cases but also throws away correct ones.  But it also
shows that we still mishandle that testcase with or without the fix(es).

It seems that the intent of the SCC analysis in interpret_loop_phi is to
look at the linear operation (or the chain of linear operations) associated
in a way that it matches

 (T2)(init + ev)

from which then (T2) { init, +, ev } follows.

So when

 PHI' = (int)(signed char)PHI + 11

we directly match (int)(signed char){ init, +, 11 }

and for

 PHI' = (long)((unsigned)PHI + -90u) + 91

we'd have to associate the outer + 91 which we can't do (but effectively
do due to the present bug).

Reply via email to