https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119294
--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> --- CSE turns (insn 18 16 19 2 (set (mem/c:V16QI (plus:DI (reg/f:DI 19 frame) (const_int -16 [0xfffffffffffffff0])) [0 MEM <char[1:16]> [(void *)&x]+0 S16 A128]) (subreg:V16QI (reg:V4SI 111) 0)) "x.c":11:10 2397 {movv16qi_internal} (nil)) (insn 19 18 20 2 (set (reg:V16QI 112 [ x ]) (mem/c:V16QI (plus:DI (reg/f:DI 19 frame) (const_int -16 [0xfffffffffffffff0])) [0 x+0 S16 A128])) "x.c":13:3 2397 {movv16qi_internal} (nil)) (insn 20 19 21 2 (set (reg:V16QI 20 xmm0) (reg:V16QI 112 [ x ])) "x.c":13:3 2397 {movv16qi_internal} (expr_list:REG_DEAD (reg:V16QI 112 [ x ]) (nil))) into (insn 1 15 18 2 (set (reg:V4SI 111) (vec_select:V4SI (subreg:V4SI (reg:V8HI 110) 0) (parallel [ (const_int 0 [0]) repeated x4 ]))) "x.c":11:10 8445 {sse2_pshufd_1} (expr_list:REG_DEAD (reg:V8HI 110) (nil))) (insn 18 16 20 2 (set (mem/c:V16QI (plus:DI (reg/f:DI 19 frame) (const_int -16 [0xfffffffffffffff0])) [0 MEM <char[1:16]> [(void *)&x]+0 S16 A128]) (subreg:V16QI (reg:V4SI 111) 0)) "x.c":11:10 2397 {movv16qi_internal} (expr_list:REG_DEAD (reg:V4SI 111) (nil))) (insn 20 18 21 2 (set (reg:V16QI 20 xmm0) (subreg:V16QI (reg:V4SI 111) 0)) "x.c":13:3 2397 {movv16qi_internal} (expr_list:REG_DEAD (reg:V16QI 112 [ x ]) (nil))) But the unused store isn't removed.