diff options
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 11 | ||||
| -rw-r--r-- | src/libsyntax/ext/asm.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/fold.rs | 5 |
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))), |
