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.

Reply via email to