]> git.lizzy.rs Git - rust.git/commitdiff
Expose LLVM appendModuleInlineAsm
authorA.J. Gardner <aaron.j.gardner@gmail.com>
Wed, 22 Mar 2017 00:50:23 +0000 (19:50 -0500)
committerA.J. Gardner <aaron.j.gardner@gmail.com>
Thu, 13 Apr 2017 00:12:49 +0000 (19:12 -0500)
src/librustc_llvm/ffi.rs
src/librustc_trans/asm.rs
src/rustllvm/RustWrapper.cpp

index 32c9183ece999ff742f7d33f1dd9b0b92fddda20..402166cc13fd933853955fa504921cbc238a62ae 100644 (file)
@@ -507,6 +507,7 @@ pub enum DIBuilder_opaque {}
 
     /// 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;
index 577d6798ec3fee1ffee3c71f3c57c713beb141eb..92cbd004206e7c53fc066821a34cc6418f5b5c58 100644 (file)
@@ -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());
     }
 }
index 5ab786f40b9335aca5b7a36d5e0af99c8869e995..c24867224ea864cd94733550001037fe7dee83fa 100644 (file)
@@ -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;