CVS-980418: Unable to find a register to spill
Andreas Jaeger
aj@arthur.rhein-neckar.de
Sun Apr 19 06:00:00 GMT 1998
I've applied the patch by John (email on egcs-bugs with Subject:"Re:
compile of libc-2.0.7pre3 fails with egcs-2.91.22 980404", from Sat,
18 Apr 1998 11:59:54 -0400):
Sat Apr 18 11:24:10 EDT 1998 John Wehle (john@feith.com)
* i386.md (movsf_push, movdf_push, movxf_push): Allow memory
operands during and after reload.
My test example compiles now without errors. The compilation is still
running (egcs19980418). I hope that this is the right fix ;-).
Thanks,
Andreas
P.S. Here's the test example again:
extern int __finitel (long double __value) __attribute__ ( (__const__) ) ;
extern long double __scalbnl (long double __x, int __n) ;
extern int *__errno_location (void) __attribute__ ((__const__));
long double __ldexpl(long double value, int exp)
{
if(!__finitel(value)||value==0.0) return value;
value = __scalbnl(value,exp);
if(!__finitel(value)||value==0.0) (*__errno_location ()) = ( 34 ) ;
return value;
}
And this was the error message:
$ /opt/egcs/lib/gcc-lib/i486-pc-linux-gnu/egcs-2.91.23/cc1 s_ldexpl.i -g -O -version -fPIC -o s_ldexpl.s
GNU C version egcs-2.91.23 980411 (gcc2 ss-980401 experimental) (i486-pc-linux-gnu) compiled by GNU C version egcs-2.91.23 980411 (gcc2 ss-980401 experimental).
options passed: -g -O -fPIC
options enabled: -fdefer-pop -fthread-jumps -fpeephole -ffunction-cse
-finline -fkeep-static-consts -fpcc-struct-return -fPIC -fcommon
-fgnu-linker -fargument-alias -m80387 -mhard-float -mno-soft-float
-mieee-fp -mfp-ret-in-387 -mschedule-prologue -mcpu=i486 -march=pentium
__ldexpl
s_ldexpl.i: In function `__ldexpl':
s_ldexpl.i:12: Unable to find a register to spill.
(insn:QI 12 10 14 (set (mem:XF (pre_dec:SI (reg:SI 7 %esp)))
(reg/v:XF 21)) 76 {movxf_push} (insn_list 4 (nil))
(insn_list:REG_LIBCALL 18 (nil)))
Aborted
--
Andreas Jaeger aj@arthur.rhein-neckar.de jaeger@informatik.uni-kl.de
for pgp-key finger ajaeger@alma.student.uni-kl.de
More information about the Gcc-bugs
mailing list