------- Comment #2 from rearnsha at gcc dot gnu dot org 2008-12-16 17:12 ------- Confirmed. This appears to be a bug in the register-renaming pass, where the insn
(insn:HI 84 79 82 8 proc/sysinfo.c:890 (parallel [ (set (reg:CC_NOOV 24 cc) (compare:CC_NOOV (minus:SI (ashiftrt:SI (reg:SI 2 r2 [170]) (const_int 2 [0x2])) (reg:SI 3 r3 [173])) (const_int 0 [0x0]))) (set (reg/v:SI 0 r0 [orig:133 rc.187 ] [133]) (minus:SI (ashiftrt:SI (reg:SI 2 r2 [170]) (const_int 2 [0x2])) (reg:SI 3 r3 [173]))) ]) 265 {*arith_shiftsi_compare0} (nil)) is transformed to (insn:HI 84 79 82 8 proc/sysinfo.c:890 (parallel [ (set (reg:CC_NOOV 24 cc) (compare:CC_NOOV (minus:SI (ashiftrt:SI (reg:SI 2 r2 [170]) (const_int 2 [0x2])) (reg:SI 14 lr [173])) (const_int 0 [0x0]))) (set (reg/v:SI 0 r0 [orig:133 rc.187 ] [133]) (minus:SI (cc0) (cc0))) ]) 265 {*arith_shiftsi_compare0} (expr_list:REG_DEAD (reg:SI 3 r3 [173]) (expr_list:REG_DEAD (reg:SI 2 r2 [170]) (nil)))) The use of cc0 in the second version indicates a failure to correctly transform the insn. The bug goes away if -frename-registers is removed from the command line. -- rearnsha at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rearnsha at gcc dot gnu dot | |org Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Known to fail| |4.3.3 Known to work| |4.4.0 Last reconfirmed|0000-00-00 00:00:00 |2008-12-16 17:12:19 date| | Target Milestone|--- |4.3.4 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36209