summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac1
-rw-r--r--libguile/atomics-internal.h8
2 files changed, 4 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac
index ab4f1f711..020151911 100644
--- a/configure.ac
+++ b/configure.ac
@@ -326,6 +326,7 @@ AC_SUBST([SCM_I_GSC_T_PTRDIFF])
AC_CHECK_HEADERS([stdint.h])
AC_CHECK_HEADERS([inttypes.h])
+AC_CHECK_HEADERS([stdatomic.h])
AC_CHECK_SIZEOF(intmax_t)
diff --git a/libguile/atomics-internal.h b/libguile/atomics-internal.h
index 9074d8cc3..f2d17e102 100644
--- a/libguile/atomics-internal.h
+++ b/libguile/atomics-internal.h
@@ -28,9 +28,7 @@
-#define HAVE_C11_ATOMICS (__STDC_VERSION__ >= 201112L && !defined(__STDC_NO_ATOMICS__))
-
-#if HAVE_C11_ATOMICS
+#ifdef HAVE_STDATOMIC_H
#include <stdatomic.h>
static inline uint32_t
@@ -74,7 +72,7 @@ scm_atomic_compare_and_swap_scm (SCM *loc, SCM *expected, SCM desired)
{
return atomic_compare_exchange_weak (loc, expected, desired);
}
-#else /* HAVE_C11_ATOMICS */
+#else /* HAVE_STDATOMIC_H */
/* Fallback implementation using locks. */
#include "libguile/threads.h"
@@ -171,6 +169,6 @@ scm_atomic_compare_and_swap_scm (SCM *loc, SCM *expected, SCM desired)
return ret;
}
-#endif /* HAVE_C11_ATOMICS */
+#endif /* HAVE_STDATOMIC_H */
#endif /* SCM_ATOMICS_INTERNAL_H */