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.
This commit is contained in:
parent
883df6251d
commit
bedee6b9f0
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/projects/clang370-import/; revision=288121
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user