------- 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

Reply via email to