summaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-01-12 19:23:22 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-01-12 19:23:22 +0000
commitdb0558c11347ad27a032e6efed509a6e99b52e67 (patch)
treec8c3b21776c722662b85ce936c07a410479ee523 /configure
parent9484e14c5cb1370c79b743d825c447794f0d00b5 (diff)
Use a more bulletproof test for whether finite() and isinf() are present.
It seems that recent gcc versions can optimize away calls to these functions even when the functions do not exist on the platform, resulting in a bogus positive result. Avoid this by using a non-constant argument and ensuring that the function result is not simply discarded. Per report from François Laupretre.
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure10
1 files changed, 7 insertions, 3 deletions
diff --git a/configure b/configure
index acb4592d8db..0a676a3fd2e 100755
--- a/configure
+++ b/configure
@@ -14202,7 +14202,6 @@ fi
-# do this one the hard way in case isinf() is a macro
echo "$as_me:$LINENO: checking for isinf" >&5
echo $ECHO_N "checking for isinf... $ECHO_C" >&6
if test "${ac_cv_func_isinf+set}" = set; then
@@ -14214,12 +14213,14 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+
#include <math.h>
+double glob_double;
int
main ()
{
-double x = 0.0; int res = isinf(x);
+return isinf(glob_double) ? 0 : 1;
;
return 0;
}
@@ -15102,11 +15103,14 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
+
#include <math.h>
+double glob_double;
+
int
main ()
{
-int dummy=finite(1.0);
+return finite(glob_double) ? 0 : 1;
;
return 0;
}