Add configure test to see if the C compiler has gcc-style computed gotos.
We'll need this for the upcoming patch to speed up expression evaluation. Might as well push it now to see if it behaves sanely in the buildfarm. Andres Freund Discussion: https://postgr.es/m/20170320062511.hp5qeurtxrwsvfxr@alap3.anarazel.de
This commit is contained in:
parent
14a72525d2
commit
bc18126a6b
@ -273,6 +273,30 @@ fi])# PGAC_C_BUILTIN_UNREACHABLE
|
||||
|
||||
|
||||
|
||||
# PGAC_C_COMPUTED_GOTO
|
||||
# -----------------------
|
||||
# Check if the C compiler knows computed gotos (gcc extension, also
|
||||
# available in at least clang). If so, define HAVE_COMPUTED_GOTO.
|
||||
#
|
||||
# Checking whether computed gotos are supported syntax-wise ought to
|
||||
# be enough, as the syntax is otherwise illegal.
|
||||
AC_DEFUN([PGAC_C_COMPUTED_GOTO],
|
||||
[AC_CACHE_CHECK(for computed goto support, pgac_cv_computed_goto,
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
|
||||
[[void *labeladdrs[] = {&&my_label};
|
||||
goto *labeladdrs[0];
|
||||
my_label:
|
||||
return 1;
|
||||
]])],
|
||||
[pgac_cv_computed_goto=yes],
|
||||
[pgac_cv_computed_goto=no])])
|
||||
if test x"$pgac_cv_computed_goto" = xyes ; then
|
||||
AC_DEFINE(HAVE_COMPUTED_GOTO, 1,
|
||||
[Define to 1 if your compiler handles computed gotos.])
|
||||
fi])# PGAC_C_COMPUTED_GOTO
|
||||
|
||||
|
||||
|
||||
# PGAC_C_VA_ARGS
|
||||
# --------------
|
||||
# Check if the C compiler understands C99-style variadic macros,
|
||||
|
34
configure
vendored
34
configure
vendored
@ -11531,6 +11531,40 @@ if test x"$pgac_cv__builtin_unreachable" = xyes ; then
|
||||
|
||||
$as_echo "#define HAVE__BUILTIN_UNREACHABLE 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for computed goto support" >&5
|
||||
$as_echo_n "checking for computed goto support... " >&6; }
|
||||
if ${pgac_cv_computed_goto+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
void *labeladdrs[] = {&&my_label};
|
||||
goto *labeladdrs[0];
|
||||
my_label:
|
||||
return 1;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
pgac_cv_computed_goto=yes
|
||||
else
|
||||
pgac_cv_computed_goto=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_computed_goto" >&5
|
||||
$as_echo "$pgac_cv_computed_goto" >&6; }
|
||||
if test x"$pgac_cv_computed_goto" = xyes ; then
|
||||
|
||||
$as_echo "#define HAVE_COMPUTED_GOTO 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __VA_ARGS__" >&5
|
||||
$as_echo_n "checking for __VA_ARGS__... " >&6; }
|
||||
|
@ -1322,6 +1322,7 @@ PGAC_C_BUILTIN_BSWAP32
|
||||
PGAC_C_BUILTIN_BSWAP64
|
||||
PGAC_C_BUILTIN_CONSTANT_P
|
||||
PGAC_C_BUILTIN_UNREACHABLE
|
||||
PGAC_C_COMPUTED_GOTO
|
||||
PGAC_C_VA_ARGS
|
||||
PGAC_STRUCT_TIMEZONE
|
||||
PGAC_UNION_SEMUN
|
||||
|
@ -108,6 +108,9 @@
|
||||
/* Define to 1 if you have the `clock_gettime' function. */
|
||||
#undef HAVE_CLOCK_GETTIME
|
||||
|
||||
/* Define to 1 if your compiler handles computed gotos. */
|
||||
#undef HAVE_COMPUTED_GOTO
|
||||
|
||||
/* Define to 1 if you have the <crtdefs.h> header file. */
|
||||
#undef HAVE_CRTDEFS_H
|
||||
|
||||
|
@ -78,6 +78,9 @@
|
||||
/* Define to 1 if you have the `clock_gettime' function. */
|
||||
/* #undef HAVE_CLOCK_GETTIME */
|
||||
|
||||
/* Define to 1 if your compiler handles computed gotos. */
|
||||
/* #undef HAVE_COMPUTED_GOTO */
|
||||
|
||||
/* Define to 1 if you have the `crypt' function. */
|
||||
/* #undef HAVE_CRYPT */
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user