]> granicus.if.org Git - postgresql/commitdiff
Force "restrict" not to be used when compiling with xlc.
authorAndres Freund <andres@anarazel.de>
Fri, 13 Oct 2017 18:54:59 +0000 (11:54 -0700)
committerAndres Freund <andres@anarazel.de>
Fri, 13 Oct 2017 19:15:06 +0000 (12:15 -0700)
Per buildfarm animal Hornet and followup manual testing by Noah Misch,
it appears xlc miscompiles code using "restrict" in at least some
cases. Allow disabling restrict usage with FORCE_DISABLE_RESTRICT=yes
in template files, and do so for aix/xlc.

Author: Andres Freund and Tom Lane
Discussion: https://postgr.es/m/1820.1507918762@sss.pgh.pa.us

configure
configure.in
src/template/aix

index cdcb3ceb0c80e888941785491c44369b56dc911b..4ecd2e19224c187d2fa98d6cb7e093bd4556c231 100755 (executable)
--- a/configure
+++ b/configure
 # spelling it understands, because it conflicts with
 # __declspec(restrict). Therefore we define pg_restrict to the
 # appropriate definition, which presumably won't conflict.
+#
+# Allow platforms with buggy compilers to force restrict to not be
+# used by setting $FORCE_DISABLE_RESTRICT=yes in the relevant
+# template.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C/C++ restrict keyword" >&5
 $as_echo_n "checking for C/C++ restrict keyword... " >&6; }
 if ${ac_cv_c_restrict+:} false; then :
@@ -12512,7 +12516,7 @@ _ACEOF
  ;;
  esac
 
-if test "$ac_cv_c_restrict" = "no" ; then
+if test "$ac_cv_c_restrict" = "no" -o "x$FORCE_DISABLE_RESTRICT" = "xyes"; then
   pg_restrict=""
 else
   pg_restrict="$ac_cv_c_restrict"
index 32bb7bf940d2792f2e6a82da760196cae2ed95f8..cea7fd075534d632cafa7b403f27a86a51f1a047 100644 (file)
@@ -1329,8 +1329,12 @@ PGAC_TYPE_LOCALE_T
 # spelling it understands, because it conflicts with
 # __declspec(restrict). Therefore we define pg_restrict to the
 # appropriate definition, which presumably won't conflict.
+#
+# Allow platforms with buggy compilers to force restrict to not be
+# used by setting $FORCE_DISABLE_RESTRICT=yes in the relevant
+# template.
 AC_C_RESTRICT
-if test "$ac_cv_c_restrict" = "no" ; then
+if test "$ac_cv_c_restrict" = "no" -o "x$FORCE_DISABLE_RESTRICT" = "xyes"; then
   pg_restrict=""
 else
   pg_restrict="$ac_cv_c_restrict"
index b566ff129df6008b28d3b90470371e30e4f4adb4..ed832849dae984f72145527d59b53c7307e3ee90 100644 (file)
@@ -10,6 +10,10 @@ if test "$GCC" != yes ; then
       CFLAGS="-O2 -qmaxmem=16384 -qsrcmsg"
       ;;
   esac
+
+  # Due to a compiler bug, see 20171013023536.GA492146@rfd.leadboat.com for details,
+  # force restrict not to be used when compiling with xlc.
+  FORCE_DISABLE_RESTRICT=yes
 fi
 
 # Native memset() is faster, tested on: