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.

Reply via email to