Michael Hope wrote:
HI there.  I'm working on porting gcc to a new architecture which only
does indirect addressing - there is no indirect with displacement.

The IA-64 target also has only indirect addressing. Well, it has some auto-increment addressing modes too, but that isn't relevant here. You could try looking at the IA-64 port to see why it works and yours doesn't.

The problem is with spill locations in GCC 4.4.0.  The elimination
code correctly elimates the frame and args pointer and replaces it
with register X.  The problem is that it then generates indirect with
offset loads to load spilt values.

Since this is happening inside reload, first thing I would check is to make sure you handle REG_OK_STRICT correctly. Before reload, a pseudo-reg is a valid memory address. Inside reload, an unallocated pseudo-reg is actually a memory location, and hence can not be a valid memory address. This is controlled by REG_OK_STRICT.

Jim

Reply via email to