]> git.lizzy.rs Git - rust.git/commitdiff
Wrap llvm::InlineAsm::AsmDialect
authorLuqman Aden <me@luqman.ca>
Sun, 10 Mar 2013 08:38:29 +0000 (00:38 -0800)
committerLuqman Aden <me@luqman.ca>
Tue, 12 Mar 2013 08:03:34 +0000 (01:03 -0700)
src/librustc/lib/llvm.rs
src/librustc/middle/trans/build.rs
src/librustc/middle/trans/expr.rs
src/rustllvm/RustWrapper.cpp

index 629ed75cfdac19b356d92878e12d69038dda2106..b0cc18a30a41dceff13f059019da73cfb2ff1b22 100644 (file)
@@ -188,6 +188,12 @@ pub enum Metadata {
     MD_tbaa_struct = 5
 }
 
+// Inline Asm Dialect
+pub enum AsmDialect {
+    AD_ATT   = 0,
+    AD_Intel = 1
+}
+
 // Opaque pointer types
 pub enum Module_opaque {}
 pub type ModuleRef = *Module_opaque;
@@ -217,9 +223,9 @@ pub enum SectionIterator_opaque {}
 pub type SectionIteratorRef = *SectionIterator_opaque;
 
 pub mod llvm {
-    use super::{AtomicBinOp, AtomicOrdering, BasicBlockRef, Bool, BuilderRef};
-    use super::{ContextRef, MemoryBufferRef, ModuleRef, ObjectFileRef};
-    use super::{Opcode, PassManagerRef, PassManagerBuilderRef};
+    use super::{AsmDialect, AtomicBinOp, AtomicOrdering, BasicBlockRef};
+    use super::{Bool, BuilderRef, ContextRef, MemoryBufferRef, ModuleRef};
+    use super::{ObjectFileRef, Opcode, PassManagerRef, PassManagerBuilderRef};
     use super::{SectionIteratorRef, TargetDataRef, TypeKind, TypeRef, UseRef};
     use super::{ValueRef};
 
@@ -1437,7 +1443,8 @@ pub unsafe fn LLVMConstNamedStruct(S: TypeRef,
         /** Prepares inline assembly. */
         pub unsafe fn LLVMInlineAsm(Ty: TypeRef, AsmString: *c_char,
                                     Constraints: *c_char, SideEffects: Bool,
-                                    AlignStack: Bool) -> ValueRef;
+                                    AlignStack: Bool, Dialect: AsmDialect)
+                                 -> ValueRef;
     }
 }
 
index 93459042d23c07450d5d9d43374cbffb0e8f9c70..ad86b6c9245390af909a92eb084eb5b31fa7bd1d 100644 (file)
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use lib::llvm::llvm;
-use lib::llvm::{CallConv, TypeKind, AtomicBinOp, AtomicOrdering};
+use lib::llvm::{CallConv, TypeKind, AtomicBinOp, AtomicOrdering, AsmDialect};
 use lib::llvm::{Opcode, IntPredicate, RealPredicate, True, False};
 use lib::llvm::{ValueRef, TypeRef, BasicBlockRef, BuilderRef, ModuleRef};
 use lib;
@@ -872,12 +872,13 @@ pub fn add_comment(bcx: block, text: &str) {
     }
 }
 
-pub fn InlineAsmCall(cx: block, asm: *c_char, cons: *c_char) -> ValueRef {
+pub fn InlineAsmCall(cx: block, asm: *c_char, cons: *c_char,
+                     dia: AsmDialect) -> ValueRef {
     unsafe {
         count_insn(cx, "inlineasm");
 
         let llfty = T_fn(~[], T_void());
-        let v = llvm::LLVMInlineAsm(llfty, asm, cons, False, False);
+        let v = llvm::LLVMInlineAsm(llfty, asm, cons, False, False, dia);
 
         Call(cx, v, ~[])
     }
index 9012d2587185cba0249a1285603cb94ed2c69096..737dd8c758a84704cba479e711bad535433dc44f 100644 (file)
@@ -694,7 +694,7 @@ fn trans_rvalue_dps_unadjusted(bcx: block, expr: @ast::expr,
         ast::expr_inline_asm(asm, cons) => {
             do str::as_c_str(*asm) |a| {
                 do str::as_c_str(*cons) |c| {
-                    InlineAsmCall(bcx, a, c);
+                    InlineAsmCall(bcx, a, c, lib::llvm::AD_ATT);
                 }
             }
             return bcx;
index f5efed5f3a01db7626cfcb54bbe2ba47f09f9c96..7686dcd4ff4dca1c1d97e520a2333483db735270 100644 (file)
@@ -545,9 +545,9 @@ extern "C" LLVMValueRef LLVMInlineAsm(LLVMTypeRef Ty,
                                       char *AsmString,
                                       char *Constraints,
                                       LLVMBool HasSideEffects,
-                                      LLVMBool IsAlignStack) {
+                                      LLVMBool IsAlignStack,
+                                      InlineAsm::AsmDialect Dialect) {
     return wrap(InlineAsm::get(unwrap<FunctionType>(Ty), AsmString,
                                Constraints, HasSideEffects,
-                               IsAlignStack));
-//                               IsAlignStack, InlineAsm::AD_Intel));
+                               IsAlignStack, Dialect));
 }