about summary refs log tree commit diff
diff options
context:
space:
mode:
authorA.J. Gardner <aaron.j.gardner@gmail.com>2017-03-21 19:50:23 -0500
committerA.J. Gardner <aaron.j.gardner@gmail.com>2017-04-12 19:12:49 -0500
commit9240054b3ee5690b6c75bebdb6316a14bdd46340 (patch)
tree0fa69ca152be3ac13f9fa7f2678c118492211214
parent7be5043fd99308135bcd0443f8af6d7e012e4148 (diff)
downloadrust-9240054b3ee5690b6c75bebdb6316a14bdd46340.tar.gz
rust-9240054b3ee5690b6c75bebdb6316a14bdd46340.zip
Expose LLVM appendModuleInlineAsm
-rw-r--r--src/librustc_llvm/ffi.rs1
-rw-r--r--src/librustc_trans/asm.rs2
-rw-r--r--src/rustllvm/RustWrapper.cpp4
3 files changed, 6 insertions, 1 deletions
diff --git a/src/librustc_llvm/ffi.rs b/src/librustc_llvm/ffi.rs
index 32c9183ece9..402166cc13f 100644
--- a/src/librustc_llvm/ffi.rs
+++ b/src/librustc_llvm/ffi.rs
@@ -507,6 +507,7 @@ extern "C" {
 
     /// See Module::setModuleInlineAsm.
     pub fn LLVMSetModuleInlineAsm(M: ModuleRef, Asm: *const c_char);
+    pub fn LLVMRustAppendModuleInlineAsm(M: ModuleRef, Asm: *const c_char);
 
     /// See llvm::LLVMTypeKind::getTypeID.
     pub fn LLVMRustGetTypeKind(Ty: TypeRef) -> TypeKind;
diff --git a/src/librustc_trans/asm.rs b/src/librustc_trans/asm.rs
index 577d6798ec3..92cbd004206 100644
--- a/src/librustc_trans/asm.rs
+++ b/src/librustc_trans/asm.rs
@@ -129,6 +129,6 @@ pub fn trans_global_asm<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
                                   ga: &hir::GlobalAsm) {
     let asm = CString::new(ga.asm.as_str().as_bytes()).unwrap();
     unsafe {
-        llvm::LLVMSetModuleInlineAsm(ccx.llmod(), asm.as_ptr());
+        llvm::LLVMRustAppendModuleInlineAsm(ccx.llmod(), asm.as_ptr());
     }
 }
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
index 5ab786f40b9..c24867224ea 100644
--- a/src/rustllvm/RustWrapper.cpp
+++ b/src/rustllvm/RustWrapper.cpp
@@ -312,6 +312,10 @@ extern "C" LLVMValueRef LLVMRustInlineAsm(LLVMTypeRef Ty, char *AsmString,
                              HasSideEffects, IsAlignStack, fromRust(Dialect)));
 }
 
+extern "C" void LLVMRustAppendModuleInlineAsm(LLVMModuleRef M, const char *Asm) {
+  unwrap(M)->appendModuleInlineAsm(StringRef(Asm));
+}
+
 typedef DIBuilder *LLVMRustDIBuilderRef;
 
 typedef struct LLVMOpaqueMetadata *LLVMRustMetadataRef;