https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114544
--- Comment #2 from Hongtao Liu <liuhongt at gcc dot gnu.org> --- Also for void foo2 (v128_t* a, v128_t* b) { c = (*a & *b)+ *b; } (insn 9 8 10 2 (set (reg:V1TI 108 [ _3 ]) (and:V1TI (reg:V1TI 99 [ _2 ]) (mem:V1TI (reg:DI 113) [1 *a_6(D)+0 S16 A128]))) "/app/example.c":49:12 7100 {andv1ti3} (expr_list:REG_DEAD (reg:DI 113) (nil))) (insn 10 9 13 2 (parallel [ (set (reg:TI 109 [ _11 ]) (plus:TI (subreg:TI (reg:V1TI 108 [ _3 ]) 0) (subreg:TI (reg:V1TI 99 [ _2 ]) 0))) (clobber (reg:CC 17 flags)) ]) "/app/example.c":49:17 256 {*addti3_doubleword} (expr_list:REG_DEAD (reg:V1TI 108 [ _3 ]) (expr_list:REG_DEAD (reg:V1TI 99 [ _2 ]) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))))) Since V1TImode can only be accocated as SSE_REGS, reload use stack for (subreg:TI (reg:V1TI 108 [ _3 ]) 0) since the latter only support GENERAL_REGS.