------- Additional Comments From steven at gcc dot gnu dot org  2005-01-21 
11:38 -------
Looks like a reload problem (of course). 
 
In the .lreg dump we have this: 
 
(insn:HI 100 99 101 9 (set (reg/v/f:SI 64 [ all_ovr_obj ]) 
        (reg/f:SI 87)) 41 {*movsi_1} (nil) 
    (nil)) 
 
 
In the .greg dump we get these reloads for insn 100: 
 
Spilling for insn 100. 
... 
Spilling for insn 100. 
... 
Reloads for insn # 100 
Reload 0: reload_in (SI) = (plus:SI (reg/f:SI 6 bp) 
                                                    (const_int -28 
[0xffffffffffffffe4])) 
        SSE_REGS, RELOAD_FOR_INPUT (opnum = 1) 
        reload_in_reg: (plus:SI (reg/f:SI 6 bp) 
                                                    (const_int -28 
[0xffffffffffffffe4])) 
        reload_reg_rtx: (reg/v/f:SI 21 xmm0 [orig:64 all_ovr_obj ] [64]) 
... 
 
At the moment of the ICE we have this: 
 
(insn 287 99 288 8 (set (reg/v/f:SI 21 xmm0 [orig:64 all_ovr_obj ] [64]) 
        (reg/f:SI 6 bp)) 41 {*movsi_1} (nil) 
    (nil)) 
 
(insn 288 287 100 8 (set (reg/v/f:SI 21 xmm0 [orig:64 all_ovr_obj ] [64]) 
        (plus:SI (reg/v/f:SI 21 xmm0 [orig:64 all_ovr_obj ] [64]) 
            (const_int -28 [0xffffffffffffffe4]))) -1 (nil) 
    (expr_list:REG_EQUIV (plus:SI (reg/f:SI 6 bp) 
            (const_int -28 [0xffffffffffffffe4])) 
        (nil))) 
 
(insn:HI 100 288 101 8 (set (reg/v/f:SI 21 xmm0 [orig:64 all_ovr_obj ] [64]) 
        (reg/v/f:SI 21 xmm0 [orig:64 all_ovr_obj ] [64])) 41 {*movsi_1} (nil) 
    (nil)) 
 
Why does reload reload an SImode register to an sse register? 
 

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19556

Reply via email to