>For some reason reload has decided that it needs ADDR_REGS for the
>register being reloaded, namely (reg:QI 1420).  So gcc looks for a
>register in ADDR_REGS which can hold QImode.  Because of your changes,
>it doesn't find one.  So it crashes.
>
>The question is why reload thinks that it needs ADDR_REGS for this
>register.  Look at the local-alloc debugging dump to see where
>regclass thinks that the register should go.

Ok, will do.  The previous suggetsion of converting from ?a to *a with
the original version of PREFERRRED_RELOAD_CLASS causes the build of
glibc to crash with: 

../sysdeps/generic/printf_fphex.c: In function `__printf_fphex':
../sysdeps/generic/printf_fphex.c:490: error: unable to find a register to 
spill in class `ADDR_REGS'
../sysdeps/generic/printf_fphex.c:490: error: this is the insn:
(insn 3081 3080 3075 216 ./_itowa.h:58 (set (subreg:SI (reg/v:QI 49 [ leading 
]) 0)
        (plus:SI (subreg:SI (reg/v:QI 49 [ leading ]) 0)
            (const_int 1 [0x1]))) 121 {*addsi3_5200} (nil)
    (nil))
../sysdeps/generic/printf_fphex.c:490: confused by earlier errors, bailing out


I'm rebuilding the toolchain without the ?a change.  What in the .lreg
dump am I looking for that will tellm "where regclass things that the
register should go"?  Is it:

;; Register 1421 in 0.

-- 
Peter Barada
[EMAIL PROTECTED]

Reply via email to