X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Ffrexpl.m4;h=49d8821ce4a3fc4d4ff8d15df42828cc7da6cdf2;hb=b58d8aacabf74bae9e628f924474f2038c18a9df;hp=e05678c61a72fb13c3bc938e9d775e79236df300;hpb=44eed1636c3f148a816776f4d5788ce8233592cd;p=gnulib.git diff --git a/m4/frexpl.m4 b/m4/frexpl.m4 index e05678c61..49d8821ce 100644 --- a/m4/frexpl.m4 +++ b/m4/frexpl.m4 @@ -1,5 +1,5 @@ -# frexpl.m4 serial 10 -dnl Copyright (C) 2007-2010 Free Software Foundation, Inc. +# frexpl.m4 serial 13 +dnl Copyright (C) 2007-2011 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. @@ -19,9 +19,11 @@ AC_DEFUN([gl_FUNC_FREXPL], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" - AC_TRY_LINK([#include - long double x;], - [int e; return frexpl (x, &e) > 0;], + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + long double x;]], + [[int e; return frexpl (x, &e) > 0;]])], [gl_cv_func_frexpl_in_libm=yes], [gl_cv_func_frexpl_in_libm=no]) LIBS="$save_LIBS" @@ -90,9 +92,11 @@ AC_DEFUN([gl_CHECK_FREXPL_NO_LIBM], AC_CACHE_CHECK([whether frexpl() can be used without linking with libm], [gl_cv_func_frexpl_no_libm], [ - AC_TRY_LINK([#include - long double x;], - [int e; return frexpl (x, &e) > 0;], + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + long double x;]], + [[int e; return frexpl (x, &e) > 0;]])], [gl_cv_func_frexpl_no_libm=yes], [gl_cv_func_frexpl_no_libm=no]) ]) @@ -108,7 +112,8 @@ AC_DEFUN([gl_FUNC_FREXPL_WORKS], AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether frexpl works], [gl_cv_func_frexpl_works], [ - AC_TRY_RUN([ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ #include #include /* Override the values of , like done in float.in.h. */ @@ -119,6 +124,7 @@ AC_DEFUN([gl_FUNC_FREXPL_WORKS], extern long double frexpl (long double, int *); int main() { + int result = 0; volatile long double x; /* Test on finite numbers that fails on AIX 5.1. */ x = 16.0L; @@ -126,7 +132,7 @@ int main() int exp = -9999; frexpl (x, &exp); if (exp != 5) - return 1; + result |= 1; } /* Test on finite numbers that fails on MacOS X 10.4, because its frexpl function returns an invalid (incorrectly normalized) value: it returns @@ -138,7 +144,7 @@ int main() int exp = -9999; long double y = frexpl (x, &exp); if (!(exp == 1 && y == 0.505L)) - return 1; + result |= 2; } /* Test on large finite numbers. This fails on BeOS at i = 16322, while LDBL_MAX_EXP = 16384. @@ -151,7 +157,10 @@ int main() int exp = -9999; frexpl (x, &exp); if (exp != i) - return 1; + { + result |= 4; + break; + } } } /* Test on denormalized numbers. */ @@ -166,7 +175,7 @@ int main() /* On machines with IEEE854 arithmetic: x = 1.68105e-4932, exp = -16382, y = 0.5. On MacOS X 10.5: exp = -16384, y = 0.5. */ if (exp != LDBL_MIN_EXP - 1) - return 1; + result |= 8; } } /* Test on infinite numbers. */ @@ -175,15 +184,20 @@ int main() int exp; long double y = frexpl (x, &exp); if (y != x) - return 1; + result |= 16; } - return 0; -}], [gl_cv_func_frexpl_works=yes], [gl_cv_func_frexpl_works=no], - [case "$host_os" in - aix* | beos* | darwin* | irix* | mingw* | pw*) - gl_cv_func_frexpl_works="guessing no";; - *) gl_cv_func_frexpl_works="guessing yes";; - esac - ]) + return result; +}]])], + [gl_cv_func_frexpl_works=yes], + [gl_cv_func_frexpl_works=no], + [ +changequote(,)dnl + case "$host_os" in + aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*) + gl_cv_func_frexpl_works="guessing no";; + *) gl_cv_func_frexpl_works="guessing yes";; + esac +changequote([,])dnl + ]) ]) ])