error in finding a register to spill
Shinpei Kato
shinny@j02.itscom.net
Mon Jun 7 09:59:00 GMT 2004
Thank you for your helping. You were perfectly correct!
The problem was caused by $f7. I've thought that I can use FP register
as a status register. And I didn't know -da. It seems so helpful.
I managed to start understanding porting gcc & gas. gas is more
troublesome though...
Anyway I could overcome my problem and learned gcc more. Thank you very
much.
Thanks,
Shinpei Kato
On Sun, 06 Jun 2004 20:35:53 -0700
Jim Wilson <wilson@specifixinc.com> wrote:
> Shinpei Kato wrote:
> > ../../gcc-3.3.3/gcc/libgcc2.c:1161: error: unable to find a register to spill
> > in class `GR_REGS'
>
> We can't do much with this without more info, such as the definition of
> the sge_df pattern in your md file, and possibly also other stuff such
> as the definitions of the register classes you use.
>
> You get more info about what is going wrong by using -da to get RTL
> debugging dumps, and then looking at the .greg file. There should be
> info at the end indicating what reloads it was trying to generate before
> it failed. This will indicate which operand needed a general register.
>
> I would guess the problem is that you can't put a reg:CC value in $f7.
> Generally, FP registers can't hold the result of compare instructions.
>
> > reg:DF 32 $f0 [167]
>
> 167 is the original register number. This is typically the pseudo-reg
> number before register allocation. See the sources, and look at
> ORIGINAL_REGNO.
> --
> Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
>
More information about the Gcc
mailing list