Clang 12 doesn't consider a function with an inconsistent signature as matching the intrinsic. This fixes InterlockedCompareExchange128 with clang 12 in MSVC mode. Signed-off-by: Martin Storsjo <martin(a)martin.st> --- include/winnt.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/winnt.h b/include/winnt.h index 01402d211fe..6d76e5e49e5 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -6923,7 +6923,7 @@ static inline BOOLEAN BitScanReverse(DWORD *index, DWORD mask) #if defined(_MSC_VER) #define InterlockedCompareExchange128 _InterlockedCompareExchange128 -static inline unsigned char _InterlockedCompareExchange128(__int64 *dest, __int64 xchg_high, __int64 xchg_low, __int64 *compare); +unsigned char _InterlockedCompareExchange128(volatile __int64 *dest, __int64 xchg_high, __int64 xchg_low, __int64 *compare); #pragma intrinsic(_InterlockedCompareExchange128) #elif defined(__x86_64__) -- 2.17.1