This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
error in finding a register to spill
- From: Shinpei Kato <shinny at j02 dot itscom dot net>
- To: gcc at gcc dot gnu dot org
- Date: Tue, 1 Jun 2004 18:31:24 +0900 (JST)
- Subject: error in finding a register to spill
Hi,
During porting gcc to new arch, I faced a following error.
$BUILD_DIR/gcc/xgcc -B$BUILD_DIR/gcc/ -B/usr/local/$ARCH/$ARCH-elf/bin/
-B/usr/local/$ARCH/$ARCH-elf/lib/ -isystem /usr/local/$ARCH/$ARCH-elf/include
-O2 -DIN_GCC -DCROSS_COMPILE -W -Wall -Wwrite-strings -Wstrict-prototypes
-Wmissing-prototypes -isystem ./include -G 0 -g -DIN_LIBGCC2
-D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I. -I../../gcc-3.3.3/gcc
-I../../gcc-3.3.3/gcc/. -I../../gcc-3.3.3/gcc/config -I../../gcc-3.3.3/gcc/../include
-DL_fixunsdfsi -c ../../gcc-3.3.3/gcc/libgcc2.c -o libgcc/./_fixunsdfsi.o
../../gcc-3.3.3/gcc/libgcc2.c: In function `__fixunsdfsi':
../../gcc-3.3.3/gcc/libgcc2.c:1161: error: unable to find a register to spill
in class `GR_REGS'
../../gcc-3.3.3/gcc/libgcc2.c:1161: error: this is the insn:
(insn:HI 10 9 11 0 (nil) (set (reg:CC 39 $f7)
(ge:CC (reg:DF 44 $c0r4)
(reg:DF 32 $f0 [167]))) 113 {sge_df} (insn_list 9 (nil))
(expr_list:REG_DEAD (reg:DF 32 $f0 [167])
(nil)))
../../gcc-3.3.3/gcc/libgcc2.c:1161: confused by earlier errors, bailing out
make[2]: *** [libgcc/./_fixunsdfsi.o] Error 1
This means we couldn't find a proper register in this insn, doesn' it?
But I don't know how to see this insn. 'reg' expressions are only follows:
reg:CC 39 $f7
reg:DF 44 $c0r4
reg:DF 32 $f0 [167]
There is no mode which needs general register.
Why do we have to find a register to spill in class `GR_REGS' (general register)?
And, what [167] means in the third?
I studied how to see RTL though, still not enough. Could you help me?
Regards,
Shinpei Kato