X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fisfinite.m4;h=dfdbc3e4795b2f87dac1da1f501dd3d077e0adfc;hb=db2ebe9d04c394f51b2b0f4306c9f9a79959b1da;hp=055ba8237d714227cb0da32f5c5249e3762d2e1f;hpb=98f80c292346b7d5fb8f92ff7bac252a6ac3800c;p=gnulib.git diff --git a/m4/isfinite.m4 b/m4/isfinite.m4 index 055ba8237..dfdbc3e47 100644 --- a/m4/isfinite.m4 +++ b/m4/isfinite.m4 @@ -1,5 +1,5 @@ -# isfinite.m4 serial 4 -dnl Copyright (C) 2007-2009 Free Software Foundation, Inc. +# isfinite.m4 serial 7 +dnl Copyright (C) 2007-2010 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. @@ -30,7 +30,6 @@ AC_DEFUN([gl_ISFINITE], AC_LIBOBJ([isfinite]) ISFINITE_LIBM= fi - AC_SUBST([REPLACE_ISFINITE]) AC_SUBST([ISFINITE_LIBM]) ]) @@ -48,7 +47,7 @@ AC_DEFUN([gl_ISFINITEL_WORKS], 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 +55,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 +75,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 +148,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";;