Issue #22038, configure: HAVE_STD_ATOMIC now also check that "atomic_int" and

"_Atomic void*" types work. Change needed on FreeBSD 10 where stdatomic.h is
available but the compiler fails on "_Atomic void*" with "_Atomic cannot be
applied to incomplete type 'void'".
This commit is contained in:
Victor Stinner 2015-01-14 16:01:46 +01:00
parent 3be472b5f7
commit 923e06f77d
3 changed files with 7 additions and 4 deletions

3
configure vendored
View File

@ -15711,7 +15711,8 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#include <stdatomic.h> #include <stdatomic.h>
_Atomic int value = ATOMIC_VAR_INIT(1); atomic_int value = ATOMIC_VAR_INIT(1);
_Atomic void *py_atomic_address = (void*) &value;
int main() { int main() {
int loaded_value = atomic_load(&value); int loaded_value = atomic_load(&value);
return 0; return 0;

View File

@ -4890,7 +4890,8 @@ AC_LINK_IFELSE(
[ [
AC_LANG_SOURCE([[ AC_LANG_SOURCE([[
#include <stdatomic.h> #include <stdatomic.h>
_Atomic int value = ATOMIC_VAR_INIT(1); atomic_int value = ATOMIC_VAR_INIT(1);
_Atomic void *py_atomic_address = (void*) &value;
int main() { int main() {
int loaded_value = atomic_load(&value); int loaded_value = atomic_load(&value);
return 0; return 0;
@ -4901,7 +4902,8 @@ AC_LINK_IFELSE(
AC_MSG_RESULT($have_stdatomic_h) AC_MSG_RESULT($have_stdatomic_h)
if test "$have_stdatomic_h" = yes; then if test "$have_stdatomic_h" = yes; then
AC_DEFINE(HAVE_STD_ATOMIC, 1, [Has stdatomic.h]) AC_DEFINE(HAVE_STD_ATOMIC, 1,
[Has stdatomic.h, atomic_int and _Atomic void* types work])
fi fi
# Check for GCC >= 4.7 __atomic builtins # Check for GCC >= 4.7 __atomic builtins

View File

@ -880,7 +880,7 @@
/* Define to 1 if you have the <stdlib.h> header file. */ /* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H #undef HAVE_STDLIB_H
/* Has stdatomic.h */ /* Has stdatomic.h, atomic_int and _Atomic void* types work */
#undef HAVE_STD_ATOMIC #undef HAVE_STD_ATOMIC
/* Define to 1 if you have the `strdup' function. */ /* Define to 1 if you have the `strdup' function. */