error: unable to find a register to spill in class 'FP_REGS'

Markus Franke Markus.Franke@informatik.tu-chemnitz.de
Fri Mar 16 20:30:00 GMT 2007


Again with attachment and CC to the Mailing List. Sorry for missing this.
Regards,
Markus

---

Hello,

thanks for your instructions. Indeed you were right. I mixed up some files.
Again an excerpt of the output-files:

---snip--- // expand
(insn 45 47 46 1 (set (subreg:SI (reg:DI 92 [ D.1212 ]) 4)
        (reg:SI 93 [ D.1211 ])) -1 (nil)
    (expr_list:REG_NO_CONFLICT (reg:SI 93 [ D.1211 ])
        (nil)))
---snap---

---snip--- // lreg
(insn 45 47 46 0 (set (subreg:SI (reg:DI 92 [ D.1212 ]) 4)
        (reg:SI 93 [ D.1211 ])) 40 {movsi_general} (nil)
    (expr_list:REG_DEAD (reg:SI 93 [ D.1211 ])
        (expr_list:REG_NO_CONFLICT (reg:SI 93 [ D.1211 ])
            (nil))))
---snap---

---snip--- // greg
;; Function main (main)

Spilling for insn 45.
---snap---

Aditionally, you can find the three files in the attachment. It would be
really nice of you if you could have a look at it. Maybe you can get a
clue what's going wrong.

Regards,
Markus Franke

Jim Wilson wrote:
> Markus Franke wrote:
> 
>> That means the compiler has to reload the pseudo registers 92 and 93 for
>> this instruction, right?
> 
> 
> First we do register allocation.  Then, after register allocation, if
> the chosen hard registers don't match the constraints, then we use
> reload to fix it.
> 
>> The relevant data for instruction 45 in .greg looks like that:
> 
> 
> Insn 45 in the greg dump looks nothing like the insn 45 in the expand
> dump, which means you are looking at the wrong insn here.  But it was
> insn 45 in the original mail.  Did you change the testcase perhaps?  Or
> use different optimization options?
> 
> The info we are looking for should look something like this
> Reloads for insn # 13
> Reload 0: reload_out (SI) = (reg:SI 97)
>     R1_REGS, RELOAD_FOR_OUTPUT (opnum = 0)
>     reload_out_reg: (reg:SI 97)
>     reload_reg_rtx: (reg:SI 1 %r1)
> 
>> ;; Register 92 in 9.
>> ;; Register 93 in 10.
> 
> 
> This tells us that pseudo 92 was allocated to hard reg 9, and pseudo 93
> was allocated to hard reg 10.  I didn't see reg class preferencing info
> for these regs, but maybe it is in one of the other dump files.
> 
> The earlier message has rtl claiming that pseudo 92 got allocated to
> register 1 (r1).  I seem to be getting inconsistent information here.

-- 
Nichts ist so praktisch wie eine gute Theorie!


-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: simple_alloc.c.00.expand
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20070316/9d925d5e/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: simple_alloc.c.36.lreg
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20070316/9d925d5e/attachment-0001.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: simple_alloc.c.37.greg
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20070316/9d925d5e/attachment-0002.ksh>


More information about the Gcc mailing list