diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-04-22 13:31:07 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-04-22 13:31:07 +0800 |
commit | 83b9e560df97f054dc2ea0660cda3fb55cd274d7 (patch) | |
tree | 057be3e50eee6278f00b260a581d08931aa6e929 /src/mir/mir.hpp | |
parent | 6f5792ac00800b1a28b8c9c81eb80046f37b2f03 (diff) | |
download | mrust-83b9e560df97f054dc2ea0660cda3fb55cd274d7.tar.gz |
MIR - Add ScopeEnd statement to indicate where a value will no longer be used
Diffstat (limited to 'src/mir/mir.hpp')
-rw-r--r-- | src/mir/mir.hpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/mir/mir.hpp b/src/mir/mir.hpp index 93a430ff..dc33d673 100644 --- a/src/mir/mir.hpp +++ b/src/mir/mir.hpp @@ -272,6 +272,10 @@ TAGGED_UNION(Statement, Assign, eDropKind kind; // NOTE: For the `box` primitive LValue slot; unsigned int flag_idx; // Valid if != ~0u + }), + (ScopeEnd, struct { + ::std::vector<unsigned> vars; + ::std::vector<unsigned> tmps; }) ); extern ::std::ostream& operator<<(::std::ostream& os, const Statement& x); @@ -286,6 +290,7 @@ struct BasicBlock class Function { public: + // TODO: Unify Variables, Temporaries, and Arguments ::std::vector< ::HIR::TypeRef> named_variables; ::std::vector< ::HIR::TypeRef> temporaries; ::std::vector<bool> drop_flags; |