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.