http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53533
--- Comment #9 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-06-12 10:39:19 UTC --- And cprop fails to propagate (reg:V4SI 85) := (const_vector:V4SI [ (const_int 23 [0x17]) (const_int 23 [0x17]) (const_int 23 [0x17]) (const_int 23 [0x17]) ]) but it at least re-adds the REG_EQUAL note, but DSE drops it again. From (insn 26 24 27 3 (set (reg:V4SI 82 [ vect_var_.10 ]) (mult:V4SI (reg:V4SI 83 [ MEM[symbol: a, index: ivtmp.20_9, offset: 0B] ]) (reg:V4SI 85))) t.c:9 1496 {*sse2_mulv4si3} (expr_list:REG_EQUAL (mult:V4SI (reg:V4SI 83 [ MEM[symbol: a, index: ivtmp.20_9, offset: 0B] ]) (const_vector:V4SI [ (const_int 23 [0x17]) (const_int 23 [0x17]) (const_int 23 [0x17]) (const_int 23 [0x17]) ])) (expr_list:REG_DEAD (reg:V4SI 85) (expr_list:REG_DEAD (reg:V4SI 83 [ MEM[symbol: a, index: ivtmp.20_9, offset: 0B] ]) (nil))))) we go to (insn 26 24 27 3 (set (reg:V4SI 82 [ vect_var_.10 ]) (mult:V4SI (reg:V4SI 83 [ MEM[symbol: a, index: ivtmp.20_9, offset: 0B] ]) (reg:V4SI 85))) t.c:9 1496 {*sse2_mulv4si3} (expr_list:REG_DEAD (reg:V4SI 83 [ MEM[symbol: a, index: ivtmp.20_9, offset: 0B] ]) (nil))) Unfortunately there is no cprop pass after split1 to eventually clean things up again (because of out-of-cfg-layout-mode ...). If I force it to run it cannot simplify (insn 42 24 43 3 (set (subreg:V2DI (reg:V4SI 86) 0) (mult:V2DI (zero_extend:V2DI (vec_select:V2SI (reg:V4SI 83 [ MEM[symbol: a, index: ivtmp.20_9, offset: 0B] ]) (parallel [ (const_int 0 [0]) (const_int 2 [0x2]) ]))) (zero_extend:V2DI (vec_select:V2SI (reg:V4SI 85) (parallel [ (const_int 0 [0]) (const_int 2 [0x2]) ]))))) t.c:9 -1 (nil)) either though.