------- Comment #5 from rguenth at gcc dot gnu dot org 2010-03-19 11:35 ------- It combines
(insn 6 5 7 2 t.c:16 (parallel [ (set (reg:SI 59 [ D.2732 ]) (ior:SI (reg:SI 67 [ g_9 ]) (const_int 1 [0x1]))) (clobber (reg:CC 17 flags)) ]) 394 {*iorsi_1} (expr_list:REG_DEAD (reg:SI 67 [ g_9 ]) (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_EQUAL (ior:SI (mem/c/i:SI (symbol_ref:DI ("g_9") [flags 0x2] <var_decl 0x7ffff5ae50a0 g_9>) [0 g_9+0 S4 A32]) (const_int 1 [0x1])) (nil))))) (insn 7 6 8 2 t.c:10 (parallel [ (set (reg:QI 68) (ior:QI (subreg:QI (reg:SI 59 [ D.2732 ]) 0) (const_int -2 [0xfffffffffffffffe]))) (clobber (reg:CC 17 flags)) ]) 398 {*iorqi_1} (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) (insn 8 7 9 2 t.c:10 (parallel [ (set (reg:SI 69) (zero_extend:SI (reg:QI 68))) (clobber (reg:CC 17 flags)) ]) 119 {*zero_extendqisi2_movzbl_and} (expr_list:REG_DEAD (reg:QI 68) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil)))) and somewhere forgets to apply the zero-extension: Successfully matched this instruction: (set (reg:SI 59 [ D.2732 ]) (ior:SI (reg:SI 67 [ g_9 ]) (const_int 1 [0x1]))) Successfully matched this instruction: (set (reg:SI 69) (const_int -1 [0xffffffffffffffff])) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43438