Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9220b00

Browse files
committed
Tighten configure's test for __builtin_constant_p().
Commit9fa6f00 assumed that __builtin_constant_p("string literal")is TRUE, if the compiler has that function at all. Buildfarm resultsshow that Sun Studio 12, at least, breaks that assumption. Removingthat usage would leave us with no mechanical check for a very fragilecoding requirement, so instead teach configure to ignore__builtin_constant_p() if it doesn't behave that way. We couldcomplicate matters by distinguishing three cases (no such function,vs does, vs doesn't work for string literals); but for now, that seemsunnecessary because our other existing uses of this function are justfairly minor optimizations of non-returning elog/ereport. We can livewithout that on the small population of compilers that act this way.Discussion:https://postgr.es/m/22997.1513264066@sss.pgh.pa.us
1 parent11b8f07 commit9220b00

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

‎config/c-compiler.m4

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,10 +285,15 @@ fi])# PGAC_C_BUILTIN_BSWAP64
285285
# -------------------------
286286
# Check if the C compiler understands __builtin_constant_p(),
287287
# and define HAVE__BUILTIN_CONSTANT_P if so.
288+
# We need __builtin_constant_p("string literal") to be true, but some older
289+
# compilers don't think that, so test for that case explicitly.
288290
AC_DEFUN([PGAC_C_BUILTIN_CONSTANT_P],
289291
[AC_CACHE_CHECK(for__builtin_constant_p,pgac_cv__builtin_constant_p,
290292
[AC_COMPILE_IFELSE([AC_LANG_SOURCE(
291-
[[static int x; static int y[__builtin_constant_p(x) ? x : 1];]]
293+
[[static int x;
294+
static int y[__builtin_constant_p(x) ? x : 1];
295+
static int z[__builtin_constant_p("string literal") ? 1 : x];
296+
]]
292297
)],
293298
[pgac_cv__builtin_constant_p=yes],
294299
[pgac_cv__builtin_constant_p=no])])

‎configure

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11901,7 +11901,10 @@ if ${pgac_cv__builtin_constant_p+:} false; then :
1190111901
else
1190211902
cat confdefs.h -<<_ACEOF >conftest.$ac_ext
1190311903
/* end confdefs.h. */
11904-
static int x; static int y[__builtin_constant_p(x) ? x : 1];
11904+
static int x;
11905+
static int y[__builtin_constant_p(x) ? x : 1];
11906+
static int z[__builtin_constant_p("string literal") ? 1 : x];
11907+
1190511908
1190611909
_ACEOF
1190711910
if ac_fn_c_try_compile"$LINENO";then:

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp