summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mir/from_hir.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mir/from_hir.cpp b/src/mir/from_hir.cpp
index 4c1455ef..8cbb55d2 100644
--- a/src/mir/from_hir.cpp
+++ b/src/mir/from_hir.cpp
@@ -219,7 +219,19 @@ namespace {
this->visit_node_ptr(node.m_code);
m_loop_stack.pop_back();
- m_builder.end_block( ::MIR::Terminator::make_Goto(loop_block) );
+ // If there's a stray result, drop i
+ if( m_builder.has_result() ) {
+ assert( m_builder.block_active() );
+ //::MIR::RValue res = m_builder.get_result(node.span());
+ //if( res.is_Use() ) {
+ // m_builder.push_stmt_drop( mv$(res.as_Use()) );
+ //}
+ }
+ // Terminate block with a jump back to the start
+ if( m_builder.block_active() )
+ {
+ m_builder.end_block( ::MIR::Terminator::make_Goto(loop_block) );
+ }
m_builder.set_cur_block(loop_next);
}
void visit(::HIR::ExprNode_LoopControl& node) override