summaryrefslogtreecommitdiff
path: root/src/hir/expr.hpp
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/expr.hpp
parent59d95e289122a84ea057ff5ed15d7d0e583138ed (diff)
downloadmrust-dd89eb7acb16234a7a9f2b6e0aee4788024c0df6.tar.gz
HIR - asm! node
Diffstat (limited to 'src/hir/expr.hpp')
-rw-r--r--src/hir/expr.hpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/hir/expr.hpp b/src/hir/expr.hpp
index b8227aa0..81e89b28 100644
--- a/src/hir/expr.hpp
+++ b/src/hir/expr.hpp
@@ -87,6 +87,32 @@ struct ExprNode_Block:
NODE_METHODS();
};
+struct ExprNode_Asm:
+ public ExprNode
+{
+ struct ValRef
+ {
+ ::std::string spec;
+ ::HIR::ExprNodeP value;
+ };
+ ::std::string m_template;
+ ::std::vector<ValRef> m_outputs;
+ ::std::vector<ValRef> m_inputs;
+ ::std::vector< ::std::string> m_clobbers;
+ ::std::vector< ::std::string> m_flags;
+
+ ExprNode_Asm(Span sp, ::std::string tpl_str, ::std::vector<ValRef> outputs, ::std::vector<ValRef> inputs, ::std::vector< ::std::string> clobbers, ::std::vector< ::std::string> flags):
+ ExprNode(mv$(sp), ::HIR::TypeRef::new_unit()),
+ m_template( mv$(tpl_str) ),
+ m_outputs( mv$(outputs) ),
+ m_inputs( mv$(inputs) ),
+ m_clobbers( mv$(clobbers) ),
+ m_flags( mv$(flags) )
+ {
+ }
+
+ NODE_METHODS();
+};
struct ExprNode_Return:
public ExprNode
{
@@ -792,6 +818,7 @@ public:
#define NV(nt) virtual void visit(nt& n) = 0;
NV(ExprNode_Block)
+ NV(ExprNode_Asm)
NV(ExprNode_Return)
NV(ExprNode_Let)
NV(ExprNode_Loop)
@@ -837,6 +864,7 @@ public:
#define NV(nt) virtual void visit(nt& n);
NV(ExprNode_Block)
+ NV(ExprNode_Asm)
NV(ExprNode_Return)
NV(ExprNode_Let)
NV(ExprNode_Loop)