diff options
Diffstat (limited to 'llvm/lib/Support')
-rw-r--r-- | llvm/lib/Support/ManagedStatic.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Support/Threading.cpp | 27 |
2 files changed, 1 insertions, 28 deletions
diff --git a/llvm/lib/Support/ManagedStatic.cpp b/llvm/lib/Support/ManagedStatic.cpp index b1feddc09ec..bc4fe954e22 100644 --- a/llvm/lib/Support/ManagedStatic.cpp +++ b/llvm/lib/Support/ManagedStatic.cpp @@ -32,7 +32,7 @@ static sys::Mutex* getManagedStaticMutex() { // We need to use a function local static here, since this can get called // during a static constructor and we need to guarantee that it's initialized // correctly. - call_once(mutex_init_flag, initializeMutex); + llvm::call_once(mutex_init_flag, initializeMutex); return ManagedStaticMutex; } diff --git a/llvm/lib/Support/Threading.cpp b/llvm/lib/Support/Threading.cpp index de2ff6b4fae..e8f5622d0e5 100644 --- a/llvm/lib/Support/Threading.cpp +++ b/llvm/lib/Support/Threading.cpp @@ -116,30 +116,3 @@ void llvm::llvm_execute_on_thread(void (*Fn)(void*), void *UserData, } #endif - -void llvm::call_once(once_flag &flag, void (*fptr)(void)) { -#if LLVM_THREADING_USE_STD_CALL_ONCE - std::call_once(flag, fptr); -#else - // For other platforms we use a generic (if brittle) version based on our - // atomics. - sys::cas_flag old_val = sys::CompareAndSwap(&flag, Wait, Uninitialized); - if (old_val == Uninitialized) { - fptr(); - sys::MemoryFence(); - TsanIgnoreWritesBegin(); - TsanHappensBefore(&flag); - flag = Done; - TsanIgnoreWritesEnd(); - } else { - // Wait until any thread doing the call has finished. - sys::cas_flag tmp = flag; - sys::MemoryFence(); - while (tmp != Done) { - tmp = flag; - sys::MemoryFence(); - } - } - TsanHappensAfter(&flag); -#endif -} |