about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-05-20 19:25:29 -0700
committerbors <bors@rust-lang.org>2013-05-20 19:25:29 -0700
commit6c0a4693c94ffbb5601b59d0c82c7785d347107d (patch)
treefd2d368589a1edf333623eeb9d0e91d2d75be38d /src/rustllvm/RustWrapper.cpp
parent32e30aaa00d098d81fd269d48845cbfd95d20710 (diff)
parent474d9983beb8a5770a202c552f36c14fa52917a2 (diff)
downloadrust-6c0a4693c94ffbb5601b59d0c82c7785d347107d.tar.gz
rust-6c0a4693c94ffbb5601b59d0c82c7785d347107d.zip
auto merge of #6649 : brson/rust/atomic-load-align, r=graydon
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
-rw-r--r--src/rustllvm/RustWrapper.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
index 9e44abe081c..cff448b6a1a 100644
--- a/src/rustllvm/RustWrapper.cpp
+++ b/src/rustllvm/RustWrapper.cpp
@@ -548,22 +548,24 @@ extern "C" LLVMTypeRef LLVMMetadataType(void) {
 extern "C" LLVMValueRef LLVMBuildAtomicLoad(LLVMBuilderRef B,
                                             LLVMValueRef source,
                                             const char* Name,
-                                            AtomicOrdering order) {
+                                            AtomicOrdering order,
+                                            unsigned alignment) {
     LoadInst* li = new LoadInst(unwrap(source),0);
     li->setVolatile(true);
     li->setAtomic(order);
-    li->setAlignment(sizeof(intptr_t));
+    li->setAlignment(alignment);
     return wrap(unwrap(B)->Insert(li, Name));
 }
 
 extern "C" LLVMValueRef LLVMBuildAtomicStore(LLVMBuilderRef B,
-                                            LLVMValueRef val,
-                                            LLVMValueRef target,
-                                            AtomicOrdering order) {
+                                             LLVMValueRef val,
+                                             LLVMValueRef target,
+                                             AtomicOrdering order,
+                                             unsigned alignment) {
     StoreInst* si = new StoreInst(unwrap(val),unwrap(target));
     si->setVolatile(true);
     si->setAtomic(order);
-    si->setAlignment(sizeof(intptr_t));
+    si->setAlignment(alignment);
     return wrap(unwrap(B)->Insert(si));
 }