Peter Barada <[EMAIL PROTECTED]> writes: > This is driving me up a tree. I have a fix for 18421(on mainline & > gcc-3.4.3) that uses HARD_REGNO_MODE_OK to prevent bytes into address > registers, and modified movqi for ColdFire to drop the '*a' in > d*a/di*a constraint, as well as modified addsi3_5200 to us 'i' instead > of 's'. > > My current problem is when I'm compiling Perl for the ColdFire v4e > using gcc-3.4.3 for m68k-linux, and I'm seeing: > > [EMAIL PROTECTED] tmp]$ > /opt/logicpd/ColdFire-new12/m68k-linux/gcc-3.4.3-glibc-2.3.2/bin/m68k-linux-gcc > -DPERL_CORE -mcfv4e -fno-strict-aliasing -D_LARGEFILE_SOURCE > -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 pp_pack.c -S -o pp_pack.s -da > pp_pack.c: In function `S_unpack_rec': > pp_pack.c:2220: error: unable to find a register to spill in class `ADDR_REGS' > pp_pack.c:2220: error: this is the insn: > (insn 5559 5558 5560 694 pp_pack.c:2144 (set (reg:SI 8 %a0 [1421]) > (plus:SI (subreg:SI (reg:QI 1420) 0) > (const_int -32 [0xffffffe0]))) 121 {*addsi3_5200} (insn_list 5558 > (nil)) > (nil)) > pp_pack.c:2220: confused by earlier errors, bailing out
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. Ian