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

Reply via email to