diff options
Diffstat (limited to 'src/mir/optimise.cpp')
-rw-r--r-- | src/mir/optimise.cpp | 6 |
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; }; |