https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119361
--- Comment #1 from Robin Dapp <rdapp at gcc dot gnu.org> --- The issue is due to: _279 = BIT_FIELD_REF <_480, 64, 0>; _330 = BIT_FIELD_REF <_480, 64, 64>; _340 = BIT_FIELD_REF <_481, 64, 0>; _350 = BIT_FIELD_REF <_481, 64, 64>; Ideally they expand to simple slidedowns (from mode V4SI to mode V2SI) but here this doesn't happen but we redundantly use subregs. Those subregs are long due for fixing. Right now, at some point, we realize that we cannot "resolve" the subreg and unfortunately go via memory instead. In the good case we have a (subreg:V2SI (reg:V4SI ...) while in the bad case there is "vec_extract V4SI -> DI" and (subreg:V2SI (reg:DI ...) but of course those should result in identical code. Another "fun" thing is that we seem to use more "VLA" modes when compiling for VLS... in particular for gathers. Is that a regression from one of the gather patches?