about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLuqman Aden <me@luqman.ca>2013-03-10 00:38:29 -0800
committerLuqman Aden <me@luqman.ca>2013-03-12 01:03:34 -0700
commitfc78b93c413e53a43ec568e3ec1d74d35924093b (patch)
tree356312161853d634d4b30ff263ef88a749cb3fff
parentecccc0d649088720a8c4af86e1722b9a26ca31dc (diff)
downloadrust-fc78b93c413e53a43ec568e3ec1d74d35924093b.tar.gz
rust-fc78b93c413e53a43ec568e3ec1d74d35924093b.zip
Wrap llvm::InlineAsm::AsmDialect
-rw-r--r--src/librustc/lib/llvm.rs15
-rw-r--r--src/librustc/middle/trans/build.rs7
-rw-r--r--src/librustc/middle/trans/expr.rs2
-rw-r--r--src/rustllvm/RustWrapper.cpp6
4 files changed, 19 insertions, 11 deletions
diff --git a/src/librustc/lib/llvm.rs b/src/librustc/lib/llvm.rs
index 629ed75cfda..b0cc18a30a4 100644
--- a/src/librustc/lib/llvm.rs
+++ b/src/librustc/lib/llvm.rs
@@ -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 mod llvm {
         /** 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;
     }
 }
 
diff --git a/src/librustc/middle/trans/build.rs b/src/librustc/middle/trans/build.rs
index 93459042d23..ad86b6c9245 100644
--- a/src/librustc/middle/trans/build.rs
+++ b/src/librustc/middle/trans/build.rs
@@ -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, ~[])
     }
diff --git a/src/librustc/middle/trans/expr.rs b/src/librustc/middle/trans/expr.rs
index 9012d258718..737dd8c758a 100644
--- a/src/librustc/middle/trans/expr.rs
+++ b/src/librustc/middle/trans/expr.rs
@@ -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;
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp
index f5efed5f3a0..7686dcd4ff4 100644
--- a/src/rustllvm/RustWrapper.cpp
+++ b/src/rustllvm/RustWrapper.cpp
@@ -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));
 }