]> granicus.if.org Git - postgresql/commitdiff
Fix "quiet inline" configure test for newer clang compilers.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 2 May 2014 19:30:38 +0000 (15:30 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 2 May 2014 19:30:38 +0000 (15:30 -0400)
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

config/c-compiler.m4
config/test_quiet_include.h [new file with mode: 0644]
configure

index 9398ca6c4777c0f2aeec3f79f1ea6207563b3c91..8a216c9f73c2e0d503fa7faf3b0e4cb1551fdda6 100644 (file)
@@ -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 (file)
index 0000000..eb0515e
--- /dev/null
@@ -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; }
index 62e8ebee1e769571df10fd90f2ff3deb75c6685c..47e1d416d2f213964a0a6ac3fdaa42cf611887c8 100755 (executable)
--- 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 ()
 {