This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.


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

Re: egcs-19981005 on i586-linux-gnu + glibc-2.0.96


On Tue, 06 Oct 1998 22:32:54 -0500, Horst von Brand wrote:
>The build of egcs crashes after the third stage, when building libiberty:
>
>  /usr/src/build/build-egcs-19981005/gcc/xgcc -B/usr/src/build/build-egcs-1998
>1005/gcc/ -c -DHAVE_CONFIG_H -O2 -fomit-frame-pointer -march=pentium -I. -I../
>../../egcs-19981005/libiberty/../include  -fpic ../../../egcs-19981005/libiber
>ty/floatformat.c -o pic/floatformat.o
>/usr/include/bits/mathinline.h: In function `floatformat_to_double':
>/usr/include/bits/mathinline.h:495: `asm' operand requires impossible reload

This is an improvement over previous snapshots, which would silently
generate incorrect code from mathinline.h.

The offending function is:

extern inline double ldexp (double x, int y)
{
  register long double v;
  asm volatile ("fscale" : "=t" (v) : "0" (x), "u" ((long double) y));
  return v;
}

I bet it won't have any trouble compiling this snippet by itself, but will
puke when it's inlined.  (Take out "extern inline" to try compiling it by
itself.)

libc people: Anyone know why there are volatile qualifiers on the
mathinline.h asms?

zw


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