From 85b0ab073ca63a3369a2007571006d7e88df08d1 Mon Sep 17 00:00:00 2001 From: Daniel Arndt Date: Fri, 12 Apr 2024 08:10:31 -0500 Subject: [PATCH 1/2] Don't define BOOST_SP_HAS_GCC_INTRINSICS for MSVC --- include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp b/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp index 2e15f79..e8848be 100644 --- a/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +++ b/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp @@ -18,7 +18,7 @@ // intrinsics are available. -#if defined( __ATOMIC_RELAXED ) && defined( __ATOMIC_ACQUIRE ) && defined( __ATOMIC_RELEASE ) && defined( __ATOMIC_ACQ_REL ) +#if defined( __ATOMIC_RELAXED ) && defined( __ATOMIC_ACQUIRE ) && defined( __ATOMIC_RELEASE ) && defined( __ATOMIC_ACQ_REL ) && !defined(_MSC_VER) # define BOOST_SP_HAS_GCC_INTRINSICS From c4ae5e0c429f2792b45e51a19c2153bf975b38ae Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 13 Apr 2024 20:29:34 +0300 Subject: [PATCH 2/2] Do not disable GCC intrinsics under clang-cl --- include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp b/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp index e8848be..cf2d897 100644 --- a/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +++ b/include/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp @@ -17,8 +17,11 @@ // Defines the BOOST_SP_HAS_GCC_INTRINSICS macro if the __atomic_* // intrinsics are available. +// Libraries (e.g. Kokkos) sometimes define the __ATOMIC_RELAXED macros, +// leading to errors under MSVC (https://github.com/boostorg/smart_ptr/pull/112) -#if defined( __ATOMIC_RELAXED ) && defined( __ATOMIC_ACQUIRE ) && defined( __ATOMIC_RELEASE ) && defined( __ATOMIC_ACQ_REL ) && !defined(_MSC_VER) +#if defined( __ATOMIC_RELAXED ) && defined( __ATOMIC_ACQUIRE ) && defined( __ATOMIC_RELEASE ) && defined( __ATOMIC_ACQ_REL ) \ + && !( defined(_MSC_VER) && !defined(__clang__) ) # define BOOST_SP_HAS_GCC_INTRINSICS