about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorAidan Hobson Sayers <aidanhs@cantab.net>2017-10-10 13:11:28 +0100
committerAidan Hobson Sayers <aidanhs@cantab.net>2017-10-10 13:14:51 +0100
commit8628d51c3b4c9a45e9066019f0e0853da7643794 (patch)
treedf94651d0061bdf5db75e3cd6c8cd3b3e293aa5f /src/rustllvm/RustWrapper.cpp
parent911d95bfe3076f2ed61798a1cf7373db9852c64f (diff)
downloadrust-8628d51c3b4c9a45e9066019f0e0853da7643794.tar.gz
rust-8628d51c3b4c9a45e9066019f0e0853da7643794.zip
Band-aid fix to stop race conditions in llvm errors
This is a big hammer, but should be effective at completely removing a
few issues, including inconsistent error messages and segfaults when
LLVM workers race to report results

LLVM_THREAD_LOCAL has been present in LLVM since 8 months before 3.7
(the earliest supported LLVM version that Rust can use)

Maybe fixes #43402 (third time lucky?)
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
-rw-r--r--src/rustllvm/RustWrapper.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
index bc616f64881..20ea8d70302 100644
--- a/src/rustllvm/RustWrapper.cpp
+++ b/src/rustllvm/RustWrapper.cpp
@@ -57,7 +57,7 @@ static AtomicOrdering fromRust(LLVMAtomicOrdering Ordering) {
   llvm_unreachable("Invalid LLVMAtomicOrdering value!");
 }
 
-static char *LastError;
+static LLVM_THREAD_LOCAL char *LastError;
 
 extern "C" LLVMMemoryBufferRef
 LLVMRustCreateMemoryBufferWithContentsOfFile(const char *Path) {