This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]