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)))