X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fldexpl.m4;h=1399b1b6735417e2753bfeddc99c5a4601addb88;hb=00eece306cac8a9d5315e6f0f53ae2c11cd8b553;hp=6fdbf00631eac781749b712bb29ed5b5f0175271;hpb=5b8b1c8feaac7087daef80a93beef761ff0e951f;p=gnulib.git diff --git a/m4/ldexpl.m4 b/m4/ldexpl.m4 index 6fdbf0063..1399b1b67 100644 --- a/m4/ldexpl.m4 +++ b/m4/ldexpl.m4 @@ -1,4 +1,4 @@ -# ldexpl.m4 serial 6 +# ldexpl.m4 serial 9 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, @@ -19,9 +19,11 @@ AC_DEFUN([gl_FUNC_LDEXPL], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" - AC_TRY_LINK([#include - long double x;], - [return ldexpl (x, -1) > 0;], + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + long double x;]], + [[return ldexpl (x, -1) > 0;]])], [gl_cv_func_ldexpl_in_libm=yes], [gl_cv_func_ldexpl_in_libm=no]) LIBS="$save_LIBS" @@ -61,9 +63,11 @@ AC_DEFUN([gl_CHECK_LDEXPL_NO_LIBM], AC_CACHE_CHECK([whether ldexpl() can be used without linking with libm], [gl_cv_func_ldexpl_no_libm], [ - AC_TRY_LINK([#include - long double x;], - [return ldexpl (x, -1) > 0;], + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include + long double x;]], + [[return ldexpl (x, -1) > 0;]])], [gl_cv_func_ldexpl_no_libm=yes], [gl_cv_func_ldexpl_no_libm=no]) ]) @@ -77,21 +81,36 @@ AC_DEFUN([gl_FUNC_LDEXPL_WORKS], AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether ldexpl works], [gl_cv_func_ldexpl_works], [ - AC_TRY_RUN([ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ #include extern long double ldexpl (long double, int); int main() { - volatile long double x1 = 1.0; - volatile long double y1 = ldexpl (x1, -1); - volatile long double x2 = 1.73205L; - volatile long double y2 = ldexpl (x2, 0); - return (y1 != 0.5L) || (y2 != x2); -}], [gl_cv_func_ldexpl_works=yes], [gl_cv_func_ldexpl_works=no], - [case "$host_os" in - aix*) gl_cv_func_ldexpl_works="guessing no";; - *) gl_cv_func_ldexpl_works="guessing yes";; - esac - ]) + int result = 0; + { + volatile long double x = 1.0; + volatile long double y = ldexpl (x, -1); + if (y != 0.5L) + result |= 1; + } + { + volatile long double x = 1.73205L; + volatile long double y = ldexpl (x, 0); + if (y != x) + result |= 2; + } + return result; +}]])], + [gl_cv_func_ldexpl_works=yes], + [gl_cv_func_ldexpl_works=no], + [ +changequote(,)dnl + case "$host_os" in + aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no";; + *) gl_cv_func_ldexpl_works="guessing yes";; + esac +changequote([,])dnl + ]) ]) ])