http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49135
--- Comment #6 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> 2011-06-03 22:18:04 UTC --- combine puts 2 and 2 together . (insn 11 10 12 (set (reg/f:SI 154) (mem/u/c/i:SI (symbol_ref/u:SI ("*.LC0") [flags 0x2]) [4 S4 A32])) /home/ramana/cos/git/gcc/gcc/testsuite/gcc.c-torture/execute/920302-1.c:14 -1 (expr_list:REG_EQUAL (label_ref:SI 0) (nil))) (insn 12 11 13 (set (reg:HI 153) (subreg:HI (reg/f:SI 154) 0)) /home/ramana/cos/git/gcc/gcc/testsuite/gcc.c-torture/execute/920302-1.c:14 -1 (nil)) (insn 13 12 0 (set (reg:SI 142 [ D.2035 ]) (zero_extend:SI (reg:HI 153))) /home/ramana/cos/git/gcc/gcc/testsuite/gcc.c-torture/execute/920302-1.c:14 -1 (nil)) Trying 11 -> 12: Successfully matched this instruction: (set (reg/f:HI 153) (mem/u/c/i:HI (symbol_ref/u:SI ("*.LC0") [flags 0x2]) [4 S2 A32])) deferring deletion of insn with uid = 11. modifying insn i3 12 r153:HI=[`*.LC0'] deferring rescan insn with uid = 12. Trying 12 -> 13: Successfully matched this instruction: (set (reg:SI 142 [ D.2035 ]) (zero_extend:SI (mem/u/c/i:HI (symbol_ref/u:SI ("*.LC0") [flags 0x2]) [4 S2 A32]))) deferring deletion of insn with uid = 12. modifying insn i3 13 r142:SI=zero_extend([`*.LC0']) deferring rescan insn with uid = 13. --- (insn 13 12 15 3 (set (reg:SI 142 [ D.2035 ]) (zero_extend:SI (mem/u/c/i:HI (symbol_ref/u:SI ("*.LC0") [flags 0x2]) [4 S2 A32]))) /home/ramana/cos/git/gcc/gcc/testsuite/gcc.c-torture/execute/920302-1.c:14 150 {*arm_zero_extendhisi2_v6} (nil))