summaryrefslogtreecommitdiff
path: root/src/mir/optimise.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mir/optimise.cpp')
-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;
};