summaryrefslogtreecommitdiff
path: root/configure.in
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.in
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.in')
-rw-r--r--configure.in18
1 files changed, 11 insertions, 7 deletions
diff --git a/configure.in b/configure.in
index 5f7acd1871f..9ede74a7b43 100644
--- a/configure.in
+++ b/configure.in
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
-dnl $PostgreSQL: pgsql/configure.in,v 1.441 2006/01/05 03:01:32 momjian Exp $
+dnl $PostgreSQL: pgsql/configure.in,v 1.442 2006/01/12 19:23:22 tgl Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
@@ -892,12 +892,13 @@ fi
AC_CHECK_DECLS([snprintf, vsnprintf])
-# do this one the hard way in case isinf() is a macro
+dnl Cannot use AC_CHECK_FUNC because isinf may be a macro
AC_CACHE_CHECK([for isinf], ac_cv_func_isinf,
-[AC_TRY_LINK(
-[#include <math.h>
+[AC_TRY_LINK([
+#include <math.h>
+double glob_double;
],
-[double x = 0.0; int res = isinf(x);],
+[return isinf(glob_double) ? 0 : 1;],
[ac_cv_func_isinf=yes],
[ac_cv_func_isinf=no])])
@@ -963,8 +964,11 @@ fi
dnl Cannot use AC_CHECK_FUNC because finite may be a macro
AC_MSG_CHECKING(for finite)
-AC_TRY_LINK([#include <math.h>],
- [int dummy=finite(1.0);],
+AC_TRY_LINK([
+#include <math.h>
+double glob_double;
+],
+ [return finite(glob_double) ? 0 : 1;],
[AC_DEFINE(HAVE_FINITE, 1, [Define to 1 if you have finite().])
AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)])