mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
For all ppc compilers, implement compare_exchange and fetch_add with asm.
This is more like how we handle s_lock.h and arch-x86.h. Reviewed by Tom Lane. Discussion: https://postgr.es/m/20191005173400.GA3979129@rfd.leadboat.com
This commit is contained in:
40
configure
vendored
40
configure
vendored
@ -14517,6 +14517,46 @@ $as_echo "$pgac_cv_have_ppc_mutex_hint" >&6; }
|
||||
|
||||
$as_echo "#define HAVE_PPC_LWARX_MUTEX_HINT 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
# Check if compiler accepts "i"(x) when __builtin_constant_p(x).
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __builtin_constant_p(x) implies \"i\"(x) acceptance" >&5
|
||||
$as_echo_n "checking whether __builtin_constant_p(x) implies \"i\"(x) acceptance... " >&6; }
|
||||
if ${pgac_cv_have_i_constraint__builtin_constant_p+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
static inline int
|
||||
addi(int ra, int si)
|
||||
{
|
||||
int res = 0;
|
||||
if (__builtin_constant_p(si))
|
||||
__asm__ __volatile__(
|
||||
" addi %0,%1,%2\n" : "=r"(res) : "b"(ra), "i"(si));
|
||||
return res;
|
||||
}
|
||||
int test_adds(int x) { return addi(3, x) + addi(x, 5); }
|
||||
int
|
||||
main ()
|
||||
{
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_compile "$LINENO"; then :
|
||||
pgac_cv_have_i_constraint__builtin_constant_p=yes
|
||||
else
|
||||
pgac_cv_have_i_constraint__builtin_constant_p=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_have_i_constraint__builtin_constant_p" >&5
|
||||
$as_echo "$pgac_cv_have_i_constraint__builtin_constant_p" >&6; }
|
||||
if test x"$pgac_cv_have_i_constraint__builtin_constant_p" = xyes ; then
|
||||
|
||||
$as_echo "#define HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
Reference in New Issue
Block a user