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: long double trouble w/ ix86



  In message <r267k571t0.fsf@happy.cygnus.com>you write:
  > Hi,
  > 
  > egcs as of this morning (1998-04-19) still cannot compile glibc.  The
  > following small file crashes gcc:
  > 
  > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  > 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;
  > }
  > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  > 
  > When called as `gcc -c -O3 -fPIC s_ldexpl.i' gcc crashes after
  > printing this:
  > 
  > s_ldexpl.i: In function `__ldexpl':
  > s_ldexpl.i:13: 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)))
This seems to be working OK on the egcs-1.1 branch.

jeff


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