diff options
author | John Hodge <tpg@mutabah.net> | 2016-12-29 08:25:05 +1100 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-12-29 08:25:05 +1100 |
commit | dd89eb7acb16234a7a9f2b6e0aee4788024c0df6 (patch) | |
tree | 5e5b259d7b8e8be7698fda6ca2b8d1d79118c86a /src/hir/expr.hpp | |
parent | 59d95e289122a84ea057ff5ed15d7d0e583138ed (diff) | |
download | mrust-dd89eb7acb16234a7a9f2b6e0aee4788024c0df6.tar.gz |
HIR - asm! node
Diffstat (limited to 'src/hir/expr.hpp')
-rw-r--r-- | src/hir/expr.hpp | 28 |
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) |