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