aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2013-04-27 19:26:56 +0000
committerDimitry Andric <dim@FreeBSD.org>2013-04-27 19:26:56 +0000
commitd9e22925e0cd52fc6b4e3fedf05367b3c6d401a1 (patch)
tree574da279b6e15a5066f7a63afa9c67c6c0e12cc1 /contrib
parent40076ebc5cafc68607f288d414481fb6a730a7cf (diff)
parentaf04c9e2c0dfdb2172241883c7b9130e63fec0be (diff)
downloadsrc-d9e22925e0cd52fc6b4e3fedf05367b3c6d401a1.tar.gz
src-d9e22925e0cd52fc6b4e3fedf05367b3c6d401a1.zip
Merge libcxxrt c812a07cd2f95c1403baf0bbe0366e7618d1d6d3:
* Don't call the _fast version of the TLS accessor in terminate() or unexpected(). 1) TLS may not have been set up yet. 2) When we're in one of these functions, Really Bad Stuff has happened and potentially saving a few cycles really isn't important. * Merge in fixes from FreeBSD trunk to make atomics work with recent clang. MFC after: 1 week
Notes
Notes: svn path=/head/; revision=249993
Diffstat (limited to 'contrib')
-rw-r--r--contrib/libcxxrt/atomic.h4
-rw-r--r--contrib/libcxxrt/exception.cc4
2 files changed, 4 insertions, 4 deletions
diff --git a/contrib/libcxxrt/atomic.h b/contrib/libcxxrt/atomic.h
index 53aa26faa3fb..f68faf325826 100644
--- a/contrib/libcxxrt/atomic.h
+++ b/contrib/libcxxrt/atomic.h
@@ -9,7 +9,7 @@
* Swap macro that enforces a happens-before relationship with a corresponding
* ATOMIC_LOAD.
*/
-#if __has_feature(cxx_atomic)
+#if __has_builtin(__c11_atomic_exchange)
#define ATOMIC_SWAP(addr, val)\
__c11_atomic_exchange((_Atomic(__typeof__(val))*)addr, val, __ATOMIC_ACQ_REL)
#elif __has_builtin(__sync_swap)
@@ -20,7 +20,7 @@
__sync_lock_test_and_set(addr, val)
#endif
-#if __has_feature(cxx_atomic)
+#if __has_builtin(__c11_atomic_load)
#define ATOMIC_LOAD(addr)\
__c11_atomic_load((_Atomic(__typeof__(*addr))*)addr, __ATOMIC_ACQUIRE)
#else
diff --git a/contrib/libcxxrt/exception.cc b/contrib/libcxxrt/exception.cc
index 7f0d3e8b0f6a..50ee582ae6f5 100644
--- a/contrib/libcxxrt/exception.cc
+++ b/contrib/libcxxrt/exception.cc
@@ -1404,7 +1404,7 @@ namespace std
*/
void terminate()
{
- static __cxa_thread_info *info = thread_info_fast();
+ static __cxa_thread_info *info = thread_info();
if (0 != info && 0 != info->terminateHandler)
{
info->terminateHandler();
@@ -1421,7 +1421,7 @@ namespace std
*/
void unexpected()
{
- static __cxa_thread_info *info = thread_info_fast();
+ static __cxa_thread_info *info = thread_info();
if (0 != info && 0 != info->unexpectedHandler)
{
info->unexpectedHandler();