diff --git a/configure b/configure index cdcb3ceb0c..4ecd2e1922 100755 --- a/configure +++ b/configure @@ -12466,6 +12466,10 @@ fi # 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" diff --git a/configure.in b/configure.in index 32bb7bf940..cea7fd0755 100644 --- a/configure.in +++ b/configure.in @@ -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" diff --git a/src/template/aix b/src/template/aix index b566ff129d..ed832849da 100644 --- a/src/template/aix +++ b/src/template/aix @@ -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: