summaryrefslogtreecommitdiff
path: root/src/mir/cleanup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mir/cleanup.cpp')
-rw-r--r--src/mir/cleanup.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/mir/cleanup.cpp b/src/mir/cleanup.cpp
index 17dca948..f26f2bdd 100644
--- a/src/mir/cleanup.cpp
+++ b/src/mir/cleanup.cpp
@@ -32,8 +32,8 @@ struct MirMutator
::MIR::LValue new_temporary(::HIR::TypeRef ty)
{
- auto rv = ::MIR::LValue::make_Temporary({ static_cast<unsigned int>(m_fcn.temporaries.size()) });
- m_fcn.temporaries.push_back( mv$(ty) );
+ auto rv = ::MIR::LValue::make_Local( static_cast<unsigned int>(m_fcn.locals.size()) );
+ m_fcn.locals.push_back( mv$(ty) );
return rv;
}
@@ -831,15 +831,13 @@ bool MIR_Cleanup_Unsize_GetMetadata(const ::MIR::TypeResolve& state, MirMutator&
void MIR_Cleanup_LValue(const ::MIR::TypeResolve& state, MirMutator& mutator, ::MIR::LValue& lval)
{
TU_MATCHA( (lval), (le),
- (Variable,
- ),
- (Temporary,
+ (Return,
),
(Argument,
),
- (Static,
+ (Local,
),
- (Return,
+ (Static,
),
(Field,
MIR_Cleanup_LValue(state, mutator, *le.val);
@@ -1105,6 +1103,9 @@ void MIR_Cleanup(const StaticTraitResolve& resolve, const ::HIR::ItemPath& path,
(Switch,
MIR_Cleanup_LValue(state, mutator, e.val);
),
+ (SwitchValue,
+ MIR_Cleanup_LValue(state, mutator, e.val);
+ ),
(Call,
MIR_Cleanup_LValue(state, mutator, e.ret_val);
if( e.fcn.is_Value() ) {