https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99067
--- Comment #3 from bin cheng <amker at gcc dot gnu.org> --- Though not sure if the underlying root causes are the same, I think these are two different issues, at least, they are handled by different parts of code in IVOPTs. For the first one, it's a known issue in GCC and IV elimination is complicated yet quite conservative for long time, while for the second one, we indeed don't know whether "i*N+j" wraps or not. Even though we might be able to improve IVOPTs under condition of wrapping behavior.