isnan: Fix porting problem to Solaris 10 with bundled gcc.

Without this fix, the command to link temacs failed due to an
undefined symbol __builtin_isnan.  This is because
/usr/include/iso/math_c99.h #defines isnan(x) to
__builtin_isnan(x), but the bundled gcc, which identifies itself
as gcc 3.4.3 (csl-sol210-3_4-branch+sol_rpath), does not have
a __builtin_isnan.
* configure.in (isnan): Remove now-unnecessary check.
* src/floatfns.c (isnan): #undef, and then #define to a clone of
what's in data.c.
(Fisnan): Always define, since it's always available now.
(syms_of_floatfns): Always define isnan at the Lisp level.
This commit is contained in:
Paul Eggert 2011-09-06 13:47:45 -07:00
parent 369e19fc45
commit c8199d0f9e
4 changed files with 24 additions and 3 deletions

View file

@ -1,3 +1,7 @@
2011-09-06 Paul Eggert <eggert@cs.ucla.edu>
* configure.in (isnan): Remove now-unnecessary check.
2011-09-06 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib, using build-aux to remove clutter (Bug#9169).

View file

@ -2708,7 +2708,7 @@ __fpending mblen mbrlen mbsinit strsignal setitimer ualarm \
sendto recvfrom getsockopt setsockopt getsockname getpeername \
gai_strerror mkstemp getline getdelim mremap fsync sync \
difftime mempcpy mblen mbrlen posix_memalign \
cfmakeraw cfsetspeed isnan copysign __executable_start)
cfmakeraw cfsetspeed copysign __executable_start)
dnl Cannot use AC_CHECK_FUNCS
AC_CACHE_CHECK([for __builtin_unwind_init],

View file

@ -1,3 +1,17 @@
2011-09-06 Paul Eggert <eggert@cs.ucla.edu>
isnan: Fix porting problem to Solaris 10 with bundled gcc.
Without this fix, the command to link temacs failed due to an
undefined symbol __builtin_isnan. This is because
/usr/include/iso/math_c99.h #defines isnan(x) to
__builtin_isnan(x), but the bundled gcc, which identifies itself
as gcc 3.4.3 (csl-sol210-3_4-branch+sol_rpath), does not have
a __builtin_isnan.
* floatfns.c (isnan): #undef, and then #define to a clone of
what's in data.c.
(Fisnan): Always define, since it's always available now.
(syms_of_floatfns): Always define isnan at the Lisp level.
2011-09-06 Paul Eggert <eggert@cs.ucla.edu>
* Makefile.in (gl-stamp): move-if-change now in build-aux (Bug#9169).

View file

@ -282,7 +282,9 @@ DEFUN ("tan", Ftan, Stan, 1, 1, 0,
return make_float (d);
}
#if defined HAVE_ISNAN && defined HAVE_COPYSIGN
#undef isnan
#define isnan(x) ((x) != (x))
DEFUN ("isnan", Fisnan, Sisnan, 1, 1, 0,
doc: /* Return non nil iff argument X is a NaN. */)
(Lisp_Object x)
@ -291,6 +293,7 @@ DEFUN ("isnan", Fisnan, Sisnan, 1, 1, 0,
return isnan (XFLOAT_DATA (x)) ? Qt : Qnil;
}
#ifdef HAVE_COPYSIGN
DEFUN ("copysign", Fcopysign, Scopysign, 1, 2, 0,
doc: /* Copy sign of X2 to value of X1, and return the result.
Cause an error if X1 or X2 is not a float. */)
@ -1030,8 +1033,8 @@ syms_of_floatfns (void)
defsubr (&Scos);
defsubr (&Ssin);
defsubr (&Stan);
#if defined HAVE_ISNAN && defined HAVE_COPYSIGN
defsubr (&Sisnan);
#ifdef HAVE_COPYSIGN
defsubr (&Scopysign);
defsubr (&Sfrexp);
defsubr (&Sldexp);