------- Comment #6 from steven at gcc dot gnu dot org 2006-07-22 11:08 ------- In the greg dump we have this RTL:
(insn:HI 10 8 11 2 (parallel [ (set (reg:SI 58 [ D.1540 ]) (plus:SI (reg/v:SI 5 di [ reg ]) (const_int -4 [0xfffffffffffffffc]))) (clobber (reg:CC 17 flags)) ]) 208 {*addsi_1} (nil) (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_DEAD (reg/v:SI 5 di [ reg ]) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))))) (insn:HI 11 10 12 2 (set (reg/v:SI 5 di [ reg ]) (reg:SI 58 [ D.1540 ])) 40 {*movsi_1} (insn_list:REG_DEP_TRUE 10 (nil)) (nil)) (insn:HI 12 11 13 2 (set (reg:CCNO 17 flags) (compare:CCNO (mem:SI (reg:SI 58 [ D.1540 ]) [3 S4 A32]) (const_int 0 [0x0]))) 3 {*cmpsi_ccno_1} (nil) (expr_list:REG_DEAD (reg:SI 58 [ D.1540 ]) (nil))) reg 5 and pseudoreg 58 can share the same hard register (i.e. 58 renumbers to 5) but GCC concludes that the two regs conflict. -- steven at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ra http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21596