https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121315
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #1) > Confirmed. > > At .optimization GCC produces: > ``` > vect__5.13_42 = MEM <vector(4) int> [(int *)src_3(D) + ivtmp.34_19 * 1]; > _4 = src_3(D) + 16; > vect__5.14_44 = MEM <vector(4) int> [(int *)_4 + ivtmp.34_19 * 1]; > ``` > > Which I think is a TARGET_MEM_REF. Yep. And there's appearantly no support for an additional constant offset in the addressing mode. > Then move invariant on the RTL comes a long and moves `src_3(D) + 16` out of > the loop. And then LDP/STP looks like it does not look outside of the loop.