This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: CVS-980418: Unable to find a register to spill


>>>>> Andreas Jaeger writes:

 > I've managed again to bootstrap egcs and make check had no failures
 > for the gcc part - and these 8 failures for g++:
 > FAIL: g++.brendan/ptolemy1.C (test for excess errors)
 > FAIL: g++.brendan/ptolemy2.C (test for excess errors)
 > FAIL: g++.mike/p4484.C (test for excess errors)
 > FAIL: g++.mike/p8155.C (test for excess errors)
 > FAIL: g++.mike/p9129.C  (test for errors, line 10)
 > FAIL: g++.mike/pmf1.C (test for excess errors)
 > FAIL: g++.mike/pmf8.C (test for excess errors)
 > FAIL: g++.other/pmf1.C (test for excess errors)

 > But trying to compile the current glibc 2.1 snapshot I got an compiler
 > error:

 > $ /opt/egcs/lib/gcc-lib/i486-pc-linux-gnu/egcs-2.91.23/cc1 s_ldexpl.i -quiet -dumpbase s_ldexpl.c -g -O -Wall -Winline -Wno-parentheses -Wstrict-prototypes -Wwrite-strings -Wno-uninitialized -Wno-write-strings -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).
 > ../sysdeps/libm-ieee754/s_ldexpl.c: In function `__ldexpl':
 > ../sysdeps/libm-ieee754/s_ldexpl.c:36: 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

 > I'm appending the s_ldexpl.i in the hope that this will help to find
 > the bug.  I don't get an error when compiling without -fPIC or with
 > -O0.

Sorry for my long mail.  I've extracted the relevant part and the
example is now much smaller:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern   int       __finitel       (long double   __value)    __attribute__ (  (__const__) ) ;
extern   int        __finite        (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;
}
extern __typeof ( __ldexpl )   ldexpl  __attribute__ ((weak, alias ("__ldexpl"))); 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$ /opt/egcs/lib/gcc-lib/i486-pc-linux-gnu/egcs-2.91.23/cc1 s_ldexpl.i -quiet -dumpbase s_ldexpl.c -g -O -Wall -Winline -Wno-parentheses -Wstrict-prototypes -Wwrite-strings -Wno-uninitialized -Wno-write-strings -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).
s_ldexpl.i: In function `__ldexpl':
s_ldexpl.i:17: 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
-- 
 Andreas Jaeger   aj@arthur.rhein-neckar.de    jaeger@informatik.uni-kl.de
  for pgp-key finger ajaeger@alma.student.uni-kl.de


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]