summaryrefslogtreecommitdiff
path: root/src/mir/helpers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mir/helpers.cpp')
-rw-r--r--src/mir/helpers.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/mir/helpers.cpp b/src/mir/helpers.cpp
index ea5709d1..e51c9180 100644
--- a/src/mir/helpers.cpp
+++ b/src/mir/helpers.cpp
@@ -481,6 +481,9 @@ namespace visit {
(Switch,
rv |= visit_mir_lvalue(e.val, ValUsage::Read, cb);
),
+ (SwitchValue,
+ rv |= visit_mir_lvalue(e.val, ValUsage::Read, cb);
+ ),
(Call,
if( e.fcn.is_Value() ) {
rv |= visit_mir_lvalue(e.fcn.as_Value(), ValUsage::Read, cb);
@@ -951,6 +954,13 @@ void MIR_Helper_GetLifetimes_DetermineValueLifetime(
m_states_to_do.push_back( ::std::make_pair(te.targets[i], mv$(s)) );
}
),
+ (SwitchValue,
+ for(size_t i = 0; i < te.targets.size(); i ++)
+ {
+ m_states_to_do.push_back( ::std::make_pair(te.targets[i], state.clone()) );
+ }
+ m_states_to_do.push_back( ::std::make_pair(te.def_target, mv$(state)) );
+ ),
(Call,
if( te.ret_val == m_lv )
{