summaryrefslogtreecommitdiff
path: root/src/mir
diff options
context:
space:
mode:
authorJohn Hodge <tpg@ucc.asn.au>2018-09-22 22:57:38 +0800
committerJohn Hodge <tpg@ucc.asn.au>2018-09-22 22:57:38 +0800
commit36ca39cec782580f8e56615cd90a9f0e4d2a9c3c (patch)
tree41c6d97b53881b3657695c5a072e211a74ff07fa /src/mir
parentfea81c19efc4961ed43a7aac44fed1efd24f2b4d (diff)
downloadmrust-36ca39cec782580f8e56615cd90a9f0e4d2a9c3c.tar.gz
Misc - Fix some failing tests
Diffstat (limited to 'src/mir')
-rw-r--r--src/mir/optimise.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mir/optimise.cpp b/src/mir/optimise.cpp
index ef9c5fc9..80bca08d 100644
--- a/src/mir/optimise.cpp
+++ b/src/mir/optimise.cpp
@@ -3479,7 +3479,11 @@ bool MIR_Optimise_GarbageCollect(::MIR::TypeResolve& state, ::MIR::Function& fcn
visited[bb] = true;
auto assigned_lval = [&](const ::MIR::LValue& lv) {
- if(const auto* le = lv.opt_Local() )
+ const auto* lvp = &lv;
+ // TODO: Consume through indexing/field accesses
+ while(lvp->is_Field())
+ lvp = &*lvp->as_Field().val;
+ if(const auto* le = lvp->opt_Local() )
used_locals[*le] = true;
};