From: David Majnemer Date: Fri, 5 Jun 2015 18:24:55 +0000 (+0000) Subject: Revert accidental commit X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d4b200d69e4cca133d17634ab57624224aee38f;p=clang Revert accidental commit This change was unrelated to r239170. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@239176 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Headers/Intrin.h b/lib/Headers/Intrin.h index 9592cccb15..727a55e5b7 100644 --- a/lib/Headers/Intrin.h +++ b/lib/Headers/Intrin.h @@ -546,8 +546,13 @@ _bittestandset(long *a, long b) { #if defined(__i386__) || defined(__x86_64__) static __inline__ unsigned char __attribute__((__always_inline__, __nodebug__)) _interlockedbittestandset(long volatile *__BitBase, long __BitPos) { - long __OldVal = __atomic_fetch_or(__BitBase, 1 << __BitPos, 5); - return (__OldVal >> __BitPos) & 1; + unsigned char __Res; + __asm__ ("xor %0, %0\n" + "lock bts %2, %1\n" + "setc %0\n" + : "=r" (__Res), "+m"(*__BitBase) + : "Ir"(__BitPos)); + return __Res; } #endif #ifdef __x86_64__