------- Comment #1 from pinskia at gcc dot gnu dot org 2006-03-02 03:07 ------- This is definitely a RA issue. (insn:HI 12 65 15 2 (set (reg/v:DI 121 [ hi ]) (fix:DI (reg/v:DF 123 [ xh ]))) 265 {fix_truncdfdi2} (insn_list:REG_DEP_TRUE 6 (nil)) (nil))
(insn:HI 15 12 16 2 (set (reg:CC 125) (compare:CC (reg/v:DI 121 [ hi ]) (reg:DI 124))) 412 {*cmpdi_internal1} (insn_list:REG_DEP_TRUE 65 (insn_list:REG_DEP_TRUE 12 (nil))) (expr_list:REG_DEAD (reg:DI 124) (expr_list:REG_EQUAL (compare:CC (reg/v:DI 121 [ hi ]) (const_int 9223372036854775807 [0x7fffffffffffffff])) (nil)))) ... (insn:HI 36 34 37 4 (set (reg:DF 132) (float:DF (reg/v:DI 121 [ hi ]))) 262 {floatdidf2} (nil) (expr_list:REG_DEAD (reg/v:DI 121 [ hi ]) (nil))) The problem is that we need to put 121 into an integer register for the compare but also in a fp register for the int-to-float. Confirmed. -- pinskia at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |missed-optimization, ra Last reconfirmed|0000-00-00 00:00:00 |2006-03-02 03:07:41 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26525