https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108599

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
cse2 still has correct:
(insn 28 27 29 2 (set (reg:V4DI 86)
        (mem/u/c:V4DI (symbol_ref/u:DI ("*.LC2") [flags 0x2]) [0  S32 A256]))
"pr108599.C":6:49 1811 {movv4di_internal}
     (expr_list:REG_EQUAL (const_vector:V4DI [
                (const_int 16 [0x10]) repeated x2
                (const_int 0 [0]) repeated x2
            ])
        (nil)))
(insn 29 28 30 2 (set (mem/c:V4DI (plus:DI (reg/f:DI 19 frame)
                (const_int -32 [0xffffffffffffffe0])) [0 MEM <vector(4) long
unsigned int> [(void *)&D.3338]+0 S32 A256])
        (reg:V4DI 86)) "pr108599.C":6:49 1811 {movv4di_internal}
     (expr_list:REG_DEAD (reg:V4DI 86)
        (nil)))
...
(insn 35 33 36 2 (set (reg:OI 88 [ D.3338 ])
        (mem/c:OI (plus:DI (reg/f:DI 19 frame)
                (const_int -32 [0xffffffffffffffe0])) [2 D.3338+0 S32 A256]))
"pr108599.C":20:7 discrim 3 80 {*movoi_internal_avx}
     (nil))
(insn 36 35 37 2 (set (mem:OI (reg/f:DI 7 sp) [0  S32 A64])
        (reg:OI 88 [ D.3338 ])) "pr108599.C":20:7 discrim 3 80
{*movoi_internal_avx}
     (expr_list:REG_DEAD (reg:OI 88 [ D.3338 ])
        (nil)))
But dse1 turns it into incorrect:
(insn 28 27 53 2 (set (reg:V4DI 86)
        (mem/u/c:V4DI (symbol_ref/u:DI ("*.LC2") [flags 0x2]) [0  S32 A256]))
"pr108599.C":6:49 1811 {movv4di_internal}
     (expr_list:REG_EQUAL (const_vector:V4DI [
                (const_int 16 [0x10]) repeated x2
                (const_int 0 [0]) repeated x2
            ])
        (nil)))
(insn 53 28 52 2 (set (reg:DI 94)
        (const_int 16 [0x10])) "pr108599.C":6:49 82 {*movdi_internal}
     (nil))
(insn 52 53 54 2 (set (reg:V4DI 93)
        (vec_duplicate:V4DI (reg:DI 94))) "pr108599.C":6:49 8004 {vec_dupv4di}
     (expr_list:REG_DEAD (reg:DI 94)
        (nil)))
(insn 54 52 30 2 (set (reg:OI 92)
        (subreg:OI (reg:V4DI 93) 0)) "pr108599.C":6:49 80 {*movoi_internal_avx}
     (expr_list:REG_DEAD (reg:V4DI 93)
        (expr_list:REG_EQUAL (const_wide_int 0x100000000000000010)
            (nil))))
...
(insn 35 33 36 2 (set (reg:OI 88 [ D.3338 ])
        (reg:OI 92)) "pr108599.C":20:7 discrim 3 80 {*movoi_internal_avx}
     (expr_list:REG_DEAD (reg:OI 92)
        (nil)))

Reply via email to