summaryrefslogtreecommitdiff
path: root/src/mir/mir.hpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2017-04-22 13:31:07 +0800
committerJohn Hodge <tpg@ucc.asn.au>2017-04-22 13:31:07 +0800
commit83b9e560df97f054dc2ea0660cda3fb55cd274d7 (patch)
tree057be3e50eee6278f00b260a581d08931aa6e929 /src/mir/mir.hpp
parent6f5792ac00800b1a28b8c9c81eb80046f37b2f03 (diff)
downloadmrust-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.hpp5
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;