From 3e9a8d9fcdffa7617175d76e2642e0150acfe488 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Fri, 17 Apr 2020 05:49:29 -0400 Subject: [PATCH 1/2] Atomic exchange for 16 bytes does not work for Embarcadero C++ clang-based compilers. --- include/boost/config/compiler/codegear.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index bdb43f03..3fdaa97a 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -35,6 +35,10 @@ #undef BOOST_HAS_FLOAT128 #endif +// The clang-based compilers can not do 128 atomic exchanges + +#define BOOST_ATOMIC_NO_CMPXCHG16B + // 32 functions are missing from the current RTL in cwchar, so it really can not be used even if it exists # define BOOST_NO_CWCHAR From 4433fe3355d53fb9c1fdc30d54c90d080ad200c1 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Thu, 23 Apr 2020 11:54:24 -0400 Subject: [PATCH 2/2] Define BOOST_NORETURN for Embarcadero the same as gcc/clang --- include/boost/config/detail/suffix.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp index 9fcde0cd..843b922e 100644 --- a/include/boost/config/detail/suffix.hpp +++ b/include/boost/config/detail/suffix.hpp @@ -634,7 +634,7 @@ namespace std{ using ::type_info; } #if !defined(BOOST_NORETURN) # if defined(_MSC_VER) # define BOOST_NORETURN __declspec(noreturn) -# elif defined(__GNUC__) +# elif defined(__GNUC__) || defined(__CODEGEARC__) && defined(__clang__) # define BOOST_NORETURN __attribute__ ((__noreturn__)) # elif defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130) # if __has_attribute(noreturn)