summaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
authorTom Lane2017-12-14 22:19:27 +0000
committerTom Lane2017-12-14 22:19:27 +0000
commit9220b00e57352fda988b187940f5d5ac4851a8bb (patch)
tree6a5420c3eb876cee87c2fa3f8ec72353dc7734e9 /configure
parent11b8f076c02b4ff0230430fb8d82c80acc450c90 (diff)
Tighten configure's test for __builtin_constant_p().
Commit 9fa6f00b1 assumed that __builtin_constant_p("string literal") is TRUE, if the compiler has that function at all. Buildfarm results show that Sun Studio 12, at least, breaks that assumption. Removing that usage would leave us with no mechanical check for a very fragile coding requirement, so instead teach configure to ignore __builtin_constant_p() if it doesn't behave that way. We could complicate matters by distinguishing three cases (no such function, vs does, vs doesn't work for string literals); but for now, that seems unnecessary because our other existing uses of this function are just fairly minor optimizations of non-returning elog/ereport. We can live without that on the small population of compilers that act this way. Discussion: https://postgr.es/m/22997.1513264066@sss.pgh.pa.us
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure5
1 files changed, 4 insertions, 1 deletions
diff --git a/configure b/configure
index ca76ef0ab22..58eafd31c58 100755
--- a/configure
+++ b/configure
@@ -11901,7 +11901,10 @@ if ${pgac_cv__builtin_constant_p+:} false; then :
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-static int x; static int y[__builtin_constant_p(x) ? x : 1];
+static int x;
+ static int y[__builtin_constant_p(x) ? x : 1];
+ static int z[__builtin_constant_p("string literal") ? 1 : x];
+
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :