------- Comment #3 from kazu at gcc dot gnu dot org 2006-05-11 19:40 ------- The combiner combines
=== i1 === (insn 10 8 11 2 (set (reg/f:SI 103) (symbol_ref:SI ("y") <var_decl 0xf7f71de0 y>)) 145 {*arm_movsi_insn} (nil) (nil)) === i2 === (insn 11 10 13 2 (set (reg:SI 105 [ y ]) (zero_extend:SI (mem/v/c/i:HI (reg/f:SI 103) [0 y+0 S2 A16]))) 123 {*arm_zero_extendhisi2} (insn_list:REG_DEP_TRUE 10 (nil)) (expr_list:REG_DEAD (reg/f:SI 103) (nil))) === i3 === (insn 13 11 14 2 (set (reg:SI 106) (ashift:SI (reg:SI 105 [ y ]) (const_int 16 [0x10]))) 101 {*arm_shiftsi3} (insn_list:REG_DEP_TRUE 11 (nil)) (expr_list:REG_DEAD (reg:SI 105 [ y ]) (nil))) into (set (subreg:HI (reg:SI 106) 0) (const_int 0 [0x0])) Doh! -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27538