https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121315
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- 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. 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.