This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: error in finding a register to spill
Shinpei Kato wrote:
> Yes I thought it would be better to use a hard register instead of a
> pseudo.
I think I was too hasty when I responded to the previous message. I
assumed there was a simple register allocation problem with the fp
status register. The problem may be something else.
It doesn't matter whether you use a reg or match_operand in the
define_insn. What matters is whether the RTL in the rtl dumps use a
hard register or a pseudo-reg. Since these come from expanders, this
means the code in the exapanders should be emitting hard registers
instead of pseudos. Since the RTL is using (reg:CC 39 $fcc0) then you
must already be using a hard register. So the problem is something else.
You will have to spend a little time looking at the lreg and greg dumps,
and stepping through reload, to figure out what is going on. Be sure to
look at the register class preferences in the lreg dump and make sure
they are sensible. The greg dumps says we have two regs to allocate,
174 and 173. Look at the RTL to figure out why these regs didn't get a
register, and what kind of register they need. Figure out why we need
to spill a reg for insn 11. See find_reload_regs in reload1.c.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com