about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-07-28 03:55:22 -0700
committerbors <bors@rust-lang.org>2013-07-28 03:55:22 -0700
commit5842ab36b81f0a3e8d6dd48a200bc405ad19ca96 (patch)
tree3e5d310206b16cf3048abe6d16ea27d360636b7a /src/rustllvm/RustWrapper.cpp
parentfe9929e303f4e0322fd0f38ec6cb6b3ec932e4a3 (diff)
parent639819f3d991a63883bc571f9aed13b8e59036d6 (diff)
downloadrust-5842ab36b81f0a3e8d6dd48a200bc405ad19ca96.tar.gz
rust-5842ab36b81f0a3e8d6dd48a200bc405ad19ca96.zip
auto merge of #8087 : Aatch/rust/atomics, r=huonw
Adds a fence operation to close #8061

Also adds static initializers to for atomic types. Since the fields are private, you aren't able to have `static mut` variables that are an atomic type. Each atomic type's initializer starts at a 0-value (so unset for `AtomicFlag` and false for `AtomicBool`).
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
-rw-r--r--src/rustllvm/RustWrapper.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
index 2a1f26bf441..beaa7e1daef 100644
--- a/src/rustllvm/RustWrapper.cpp
+++ b/src/rustllvm/RustWrapper.cpp
@@ -513,6 +513,9 @@ extern "C" LLVMValueRef LLVMBuildAtomicCmpXchg(LLVMBuilderRef B,
     return wrap(unwrap(B)->CreateAtomicCmpXchg(unwrap(target), unwrap(old),
                                                unwrap(source), order));
 }
+extern "C" LLVMValueRef LLVMBuildAtomicFence(LLVMBuilderRef B, AtomicOrdering order) {
+    return wrap(unwrap(B)->CreateFence(order));
+}
 extern "C" LLVMValueRef LLVMBuildAtomicRMW(LLVMBuilderRef B,
                                            AtomicRMWInst::BinOp op,
                                            LLVMValueRef target,
@@ -838,4 +841,4 @@ extern "C" LLVMValueRef LLVMDIBuilderCreateUnionType(
         Flags,
         unwrapDI<DIArray>(Elements),
         RunTimeLang));
-}
\ No newline at end of file
+}