>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]