https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113662
--- Comment #32 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #31) > _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. Note the above was for aarch64. For x86 IV-OPTS produces: _35 = _48 - _2; _34 = &__i1 + _35; MEM[(int *)_34 + 4B + _46 * 1] = _41;