summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2014-05-02 19:30:38 +0000
committerTom Lane2014-05-02 19:30:38 +0000
commite70980747dbe50b5ddc9aee88912e78825cacdd1 (patch)
treec8cc490c1e24a4aff62d9bb7c15886bd7773a6a8
parentdb1fdc945da471a8dc1f0dd701270858acd0806f (diff)
Fix "quiet inline" configure test for newer clang compilers.
This test used to just define an unused static inline function and check whether that causes a warning. But newer clang versions warn about unused static inline functions when defined inside a .c file, but not when defined in an included header, which is the case we care about. Change the test to cope. Andres Freund
-rw-r--r--config/c-compiler.m415
-rw-r--r--config/test_quiet_include.h5
-rwxr-xr-xconfigure2
3 files changed, 19 insertions, 3 deletions
diff --git a/config/c-compiler.m4 b/config/c-compiler.m4
index 9398ca6c477..8a216c9f73c 100644
--- a/config/c-compiler.m4
+++ b/config/c-compiler.m4
@@ -19,7 +19,18 @@ fi])# PGAC_C_SIGNED
# PGAC_C_INLINE
# -------------
-# Check if the C compiler understands inline functions.
+# Check if the C compiler understands inline functions without being
+# noisy about unused static inline functions. Some older compilers
+# understand inline functions (as tested by AC_C_INLINE) but warn about
+# them if they aren't used in a translation unit.
+#
+# This test used to just define an inline function, but some compilers
+# (notably clang) got too smart and now warn about unused static
+# inline functions when defined inside a .c file, but not when defined
+# in an included header. Since the latter is what we want to use, test
+# to see if the warning appears when the function is in a header file.
+# Not pretty, but it works.
+#
# Defines: inline, USE_INLINE
AC_DEFUN([PGAC_C_INLINE],
[AC_C_INLINE
@@ -28,7 +39,7 @@ AC_CACHE_CHECK([for quiet inline (no complaint if unreferenced)], pgac_cv_c_inli
if test "$ac_cv_c_inline" != no; then
pgac_c_inline_save_werror=$ac_c_werror_flag
ac_c_werror_flag=yes
- AC_LINK_IFELSE([AC_LANG_PROGRAM([static inline int fun () {return 0;}],[])],
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include "$srcdir/config/test_quiet_include.h"],[])],
[pgac_cv_c_inline_quietly=yes])
ac_c_werror_flag=$pgac_c_inline_save_werror
fi])
diff --git a/config/test_quiet_include.h b/config/test_quiet_include.h
new file mode 100644
index 00000000000..eb0515ede78
--- /dev/null
+++ b/config/test_quiet_include.h
@@ -0,0 +1,5 @@
+/*
+ * For the raison d'etre of this file, check the comment above the definition
+ * of the PGAC_C_INLINE macro in config/c-compiler.m4.
+ */
+static inline int fun () { return 0; }
diff --git a/configure b/configure
index 62e8ebee1e7..47e1d416d2f 100755
--- a/configure
+++ b/configure
@@ -15084,7 +15084,7 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-static inline int fun () {return 0;}
+#include "$srcdir/config/test_quiet_include.h"
int
main ()
{