diff options
author | Hans Wennborg <hans@hanshq.net> | 2017-04-07 16:41:47 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2017-04-07 16:41:47 +0000 |
commit | 7a351322b4f455f6485649124423f347cb559c3b (patch) | |
tree | c7e8f0453724651724a639c15224b6d72bfc10fd /lib/Headers | |
parent | 49c4c7d799281c219c71cae4419afef8b300ee43 (diff) |
Implement _interlockedbittestandset as a builtin
It's used by MS headers in VS 2017 without including intrin.h, so we
can't implement it in the header anymore.
Differential Revision: https://reviews.llvm.org/D31736
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@299782 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Headers')
-rw-r--r-- | lib/Headers/intrin.h | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/lib/Headers/intrin.h b/lib/Headers/intrin.h index 16028d5c6b..38d9407abe 100644 --- a/lib/Headers/intrin.h +++ b/lib/Headers/intrin.h @@ -173,7 +173,6 @@ void __cdecl _disable(void); void __cdecl _enable(void); long _InterlockedAddLargeStatistic(__int64 volatile *_Addend, long _Value); unsigned char _interlockedbittestandreset(long volatile *, long); -static __inline__ unsigned char _interlockedbittestandset(long volatile *, long); long _InterlockedCompareExchange_HLEAcquire(long volatile *, long, long); long _InterlockedCompareExchange_HLERelease(long volatile *, long, long); @@ -369,11 +368,6 @@ _bittestandset(long *_BitBase, long _BitPos) { *_BitBase = *_BitBase | (1 << _BitPos); return _Res; } -static __inline__ unsigned char __DEFAULT_FN_ATTRS -_interlockedbittestandset(long volatile *_BitBase, long _BitPos) { - long _PrevVal = __atomic_fetch_or(_BitBase, 1l << _BitPos, __ATOMIC_SEQ_CST); - return (_PrevVal >> _BitPos) & 1; -} #if defined(__arm__) || defined(__aarch64__) static __inline__ unsigned char __DEFAULT_FN_ATTRS _interlockedbittestandset_acq(long volatile *_BitBase, long _BitPos) { |