mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-22 20:05:38 +00:00
Unbreak mingw build
llvm-svn: 71856
This commit is contained in:
parent
1f8d845588
commit
0df5f515ff
@ -27,12 +27,12 @@
|
||||
|
||||
namespace llvm {
|
||||
namespace sys {
|
||||
|
||||
|
||||
#if !defined(ENABLE_THREADS) || ENABLE_THREADS == 0
|
||||
inline void MemoryFence() {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
typedef uint32_t cas_flag;
|
||||
inline cas_flag CompareAndSwap(cas_flag* dest, cas_flag exc, cas_flag c) {
|
||||
cas_flag result = *dest;
|
||||
@ -40,22 +40,22 @@ namespace llvm {
|
||||
*dest = exc;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
#elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 1)
|
||||
inline void MemoryFence() {
|
||||
__sync_synchronize();
|
||||
}
|
||||
|
||||
|
||||
typedef volatile uint32_t cas_flag;
|
||||
inline cas_flag CompareAndSwap(cas_flag* dest, cas_flag exc, cas_flag c) {
|
||||
return __sync_val_compare_and_swap(dest, exc, c);
|
||||
}
|
||||
|
||||
|
||||
#elif defined(__APPLE__)
|
||||
inline void MemoryFence() {
|
||||
OSMemoryBarrier();
|
||||
}
|
||||
|
||||
|
||||
typedef volatile int32_t cas_flag;
|
||||
inline cas_flag CompareAndSwap(cas_flag* dest, cas_flag exc, cas_flag c) {
|
||||
cas_flag old = *dest;
|
||||
@ -63,11 +63,18 @@ namespace llvm {
|
||||
return old;
|
||||
}
|
||||
#elif defined(LLVM_ON_WIN32)
|
||||
#warning Memory fence implementation requires Windows 2003 or later.
|
||||
inline void MemoryFence() {
|
||||
#ifdef _MSC_VER
|
||||
MemoryBarrier();
|
||||
#elif 0
|
||||
// FIXME: Requires SSE2 support
|
||||
__asm__ __volatile__("mfence":::"memory");
|
||||
#else
|
||||
// FIXME: just temporary workaround. We need to emit some fence...
|
||||
__asm__ __volatile__("":::"memory");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
typedef volatile long cas_flag;
|
||||
inline cas_flag CompareAndSwap(cas_flag* dest, cas_flag exc, cas_flag c) {
|
||||
return InterlockedCompareExchange(dest, exc, c);
|
||||
@ -75,8 +82,8 @@ namespace llvm {
|
||||
#else
|
||||
#error No memory atomics implementation for your platform!
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user