X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fisfinite.m4;h=5f6119d33c5279268933f1cc21abceebb2a86247;hb=2ea759e2faab0331078b1ea0df244ef781dbd994;hp=4fb557b47bd2fc898fe71f62ea22b6cd38256b11;hpb=bfef7ab3494ed38e16363623a75c2740c8803f6e;p=gnulib.git diff --git a/m4/isfinite.m4 b/m4/isfinite.m4 index 4fb557b47..5f6119d33 100644 --- a/m4/isfinite.m4 +++ b/m4/isfinite.m4 @@ -1,5 +1,5 @@ -# isfinite.m4 serial 3 -dnl Copyright (C) 2007-2008 Free Software Foundation, Inc. +# isfinite.m4 serial 6 +dnl Copyright (C) 2007-2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -44,11 +44,11 @@ dnl pseudo-denormals on ia64. AC_DEFUN([gl_ISFINITEL_WORKS], [ AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_C_BIGENDIAN]) + AC_REQUIRE([gl_BIGENDIAN]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether isfinite(long double) works], [gl_cv_func_isfinitel_works], [ - AC_TRY_RUN([ + AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -56,6 +56,17 @@ AC_DEFUN([gl_ISFINITEL_WORKS], ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { unsigned int word[NWORDS]; long double value; } memory_long_double; +/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the + runtime type conversion. */ +#ifdef __sgi +static long double NaNl () +{ + double zero = 0.0; + return zero / zero; +} +#else +# define NaNl() (0.0L / 0.0L) +#endif int main () { memory_long_double m; @@ -65,7 +76,7 @@ int main () in the mantissa bits. The xor operation twiddles a bit that can only be a sign bit or a mantissa bit (since the exponent never extends to bit 31). */ - m.value = 0.0L / 0.0L; + m.value = NaNl (); m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); for (i = 0; i < NWORDS; i++) m.word[i] |= 1; @@ -138,7 +149,7 @@ int main () #endif return 0; -}], [gl_cv_func_isfinitel_works=yes], [gl_cv_func_isfinitel_works=no], +}]])], [gl_cv_func_isfinitel_works=yes], [gl_cv_func_isfinitel_works=no], [case "$host_cpu" in # Guess no on ia64, x86_64, i386. ia64 | x86_64 | i*86) gl_cv_func_isnanl_works="guessing no";;