https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113662
--- Comment #31 from Andrew Pinski <pinskia at gcc dot gnu.org> --- _35 = &__i1 + _48; MEM[(int *)_35 + _46 * 1] = _41; I think this is the IV-OPTS produces which confuses the rtl aliasing. Note the reason why -fno-strict-aliasing works for at least the reduced testcase is just because there are load/stores for the iterator now instead of without it.