summaryrefslogtreecommitdiff
path: root/src/hir/from_ast_expr.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-12-29 08:25:05 +1100
committerJohn Hodge <tpg@mutabah.net>2016-12-29 08:25:05 +1100
commitdd89eb7acb16234a7a9f2b6e0aee4788024c0df6 (patch)
tree5e5b259d7b8e8be7698fda6ca2b8d1d79118c86a /src/hir/from_ast_expr.cpp
parent59d95e289122a84ea057ff5ed15d7d0e583138ed (diff)
downloadmrust-dd89eb7acb16234a7a9f2b6e0aee4788024c0df6.tar.gz
HIR - asm! node
Diffstat (limited to 'src/hir/from_ast_expr.cpp')
-rw-r--r--src/hir/from_ast_expr.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/hir/from_ast_expr.cpp b/src/hir/from_ast_expr.cpp
index 08e49aa4..25f6eade 100644
--- a/src/hir/from_ast_expr.cpp
+++ b/src/hir/from_ast_expr.cpp
@@ -47,7 +47,14 @@ struct LowerHIR_ExprNode_Visitor:
BUG(v.get_pos(), "Hit ExprNode_Macro");
}
virtual void visit(::AST::ExprNode_Asm& v) override {
- TODO(v.get_pos(), "Convert asm! to HIR");
+ ::std::vector< ::HIR::ExprNode_Asm::ValRef> outputs;
+ ::std::vector< ::HIR::ExprNode_Asm::ValRef> inputs;
+ for(auto& vr : v.m_output)
+ outputs.push_back( ::HIR::ExprNode_Asm::ValRef { vr.name, LowerHIR_ExprNode_Inner(*vr.value) } );
+ for(auto& vr : v.m_input)
+ inputs.push_back( ::HIR::ExprNode_Asm::ValRef { vr.name, LowerHIR_ExprNode_Inner(*vr.value) } );
+
+ m_rv.reset( new ::HIR::ExprNode_Asm( v.span(), v.m_text, mv$(outputs), mv$(inputs), v.m_clobbers, v.m_flags ) );
}
virtual void visit(::AST::ExprNode_Flow& v) override {
switch( v.m_type )