about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/ast.rs11
-rw-r--r--src/libsyntax/ext/asm.rs6
-rw-r--r--src/libsyntax/fold.rs5
3 files changed, 16 insertions, 6 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs
index 05c5f447993..c70288902a3 100644
--- a/src/libsyntax/ast.rs
+++ b/src/libsyntax/ast.rs
@@ -937,13 +937,22 @@ impl to_bytes::IterBytes for Ty {
 #[auto_encode]
 #[auto_decode]
 #[deriving(Eq)]
+pub enum asm_dialect {
+    asm_att,
+    asm_intel
+}
+
+#[auto_encode]
+#[auto_decode]
+#[deriving(Eq)]
 pub struct inline_asm {
     asm: @~str,
     clobbers: @~str,
     inputs: ~[(@~str, @expr)],
     outputs: ~[(@~str, @expr)],
     volatile: bool,
-    alignstack: bool
+    alignstack: bool,
+    dialect: asm_dialect
 }
 
 #[auto_encode]
diff --git a/src/libsyntax/ext/asm.rs b/src/libsyntax/ext/asm.rs
index c3faf4f1e09..b070948d405 100644
--- a/src/libsyntax/ext/asm.rs
+++ b/src/libsyntax/ext/asm.rs
@@ -53,6 +53,7 @@ pub fn expand_asm(cx: @ext_ctxt, sp: span, tts: &[ast::token_tree])
     let mut cons = ~"";
     let mut volatile = false;
     let mut alignstack = false;
+    let mut dialect = ast::asm_att;
 
     let mut state = Asm;
     loop outer: {
@@ -125,6 +126,8 @@ pub fn expand_asm(cx: @ext_ctxt, sp: span, tts: &[ast::token_tree])
                     volatile = true;
                 } else if option == ~"alignstack" {
                     alignstack = true;
+                } else if option == ~"intel" {
+                    dialect = ast::asm_intel;
                 }
 
                 if *p.token == token::COMMA {
@@ -169,7 +172,8 @@ pub fn expand_asm(cx: @ext_ctxt, sp: span, tts: &[ast::token_tree])
             inputs: inputs,
             outputs: outputs,
             volatile: volatile,
-            alignstack: alignstack
+            alignstack: alignstack,
+            dialect: dialect
         }),
         span: sp
     })
diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs
index 6ba629a24e1..e54c495323f 100644
--- a/src/libsyntax/fold.rs
+++ b/src/libsyntax/fold.rs
@@ -561,12 +561,9 @@ pub fn noop_fold_expr(e: &expr_, fld: @ast_fold) -> expr_ {
         }
         expr_inline_asm(a) => {
             expr_inline_asm(inline_asm {
-                asm: a.asm,
-                clobbers: a.clobbers,
                 inputs: a.inputs.map(|&(c, in)| (c, fld.fold_expr(in))),
                 outputs: a.outputs.map(|&(c, out)| (c, fld.fold_expr(out))),
-                volatile: a.volatile,
-                alignstack: a.alignstack
+                .. a
             })
         }
         expr_mac(ref mac) => expr_mac(fold_mac((*mac))),