pa reload problem

Alan Modra alan@linuxcare.com.au
Sun, 10 Dec 2000 10:35:57 +1100 (EST)


On Sat, 9 Dec 2000, Richard Henderson wrote:

> On Sun, Dec 10, 2000 at 12:57:03AM +1100, Alan Modra wrote:
> > Grrr, that allocates r1 first, which loses on 32-bit hppa.
> 
> Err, elaborate on "loses".

Like so

/src/parisc/gcc-20001208/gcc/libgcc2.c: In function `__throw':
/src/parisc/gcc-20001208/gcc/libgcc2.c:4121: Unable to find a register to
spill in class `R1_REGS'.
/src/parisc/gcc-20001208/gcc/libgcc2.c:4121: This is the insn:

(insn 161 190 163 (set (reg/f:SI 21 %r21)
        (label_ref:SI 169)) 79 {*pa.md:2287} (nil)
    (expr_list:REG_EQUIV (label_ref:SI 169)
        (insn_list:REG_LABEL 169 (nil))))

> >       When allocating registers, do so according to REG_ALLOC_ORDER and
> > 	choose GENERAL_REGS.
> 
> The problem with this is that you've broken the ABI for all
> extant targets.

Pity.  It looked like a nice solution to me.

-- 
Linuxcare.  Support for the Revolution.