diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2015-09-22 17:34:51 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2015-09-22 17:34:51 +0000 |
commit | bedee6b9f09571bcaca9f173e53a12f6dd31490a (patch) | |
tree | 9171ad3c31621914a6d38df1554a76ccca734c7f /contrib | |
parent | 883df6251db9247adabd2cad7978f7061185c755 (diff) | |
download | src-bedee6b9f09571bcaca9f173e53a12f6dd31490a.tar.gz src-bedee6b9f09571bcaca9f173e53a12f6dd31490a.zip |
Work around clang emitting libcalls to __atomic_add_fetch() and friends
in libc++, on __ARM_ARCH < 6. Additionally, supply the missing stub
__libcpp_relaxed_store(), as proposed in http://reviews.llvm.org/D13051
NOTE: this needs to be fixed properly later on, by supplying library
functions implementing atomic operations for arm < v6. We should
probably take those from sys/arm/arm/stdatomic.c, and stuff them into
either libgcc or compiler-rt.
Notes
Notes:
svn path=/projects/clang370-import/; revision=288121
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/libc++/src/support/atomic_support.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/contrib/libc++/src/support/atomic_support.h b/contrib/libc++/src/support/atomic_support.h index e738a5154cd3..b0ff7f69fa68 100644 --- a/contrib/libc++/src/support/atomic_support.h +++ b/contrib/libc++/src/support/atomic_support.h @@ -13,7 +13,8 @@ && defined(__ATOMIC_ACQUIRE) \ && defined(__ATOMIC_RELEASE) \ && defined(__ATOMIC_ACQ_REL) \ - && defined(__ATOMIC_SEQ_CST) + && defined(__ATOMIC_SEQ_CST) \ + && defined(__ARM_ARCH) && __ARM_ARCH >= 6 # define _LIBCPP_HAS_ATOMIC_BUILTINS #elif !defined(__clang__) && defined(_GNUC_VER) && _GNUC_VER >= 407 # define _LIBCPP_HAS_ATOMIC_BUILTINS @@ -103,6 +104,13 @@ void __libcpp_atomic_store(_ValueType* __dest, _FromType __val, *__dest = __val; } +template <class _ValueType, class _FromType> +inline _LIBCPP_INLINE_VISIBILITY +void __libcpp_relaxed_store(_ValueType* __dest, _FromType __val) +{ + *__dest = __val; +} + template <class _ValueType> inline _LIBCPP_INLINE_VISIBILITY _ValueType __libcpp_atomic_load(_ValueType const* __val, |