summaryrefslogtreecommitdiff
path: root/src/mir/from_hir_match.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-12-27 19:28:08 +1100
committerJohn Hodge <tpg@mutabah.net>2016-12-27 19:28:08 +1100
commit15e14449ba15e234e99a231473c65cdf92ff76af (patch)
treee7e2ff7fb7f221bf40f000c92265a76bb698a298 /src/mir/from_hir_match.cpp
parent2ed96df45da794801df31f14111807beb31fc59d (diff)
downloadmrust-15e14449ba15e234e99a231473c65cdf92ff76af.tar.gz
MIR Gen - Misc fixes
Diffstat (limited to 'src/mir/from_hir_match.cpp')
-rw-r--r--src/mir/from_hir_match.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/mir/from_hir_match.cpp b/src/mir/from_hir_match.cpp
index 4d61da73..78382db3 100644
--- a/src/mir/from_hir_match.cpp
+++ b/src/mir/from_hir_match.cpp
@@ -120,8 +120,9 @@ void MIR_LowerHIR_Match( MirBuilder& builder, MirConverter& conv, ::HIR::ExprNod
auto next_block = builder.new_bb_unlinked();
// 1. Stop the current block so we can generate code
- auto first_cmp_block = builder.new_bb_unlinked();
- builder.end_block( ::MIR::Terminator::make_Goto(first_cmp_block) );
+ //auto first_cmp_block = builder.new_bb_unlinked();
+ //builder.end_block( ::MIR::Terminator::make_Goto(first_cmp_block) );
+ auto first_cmp_block = builder.pause_cur_block();
struct H {
@@ -242,7 +243,7 @@ void MIR_LowerHIR_Match( MirBuilder& builder, MirConverter& conv, ::HIR::ExprNod
t_arm_rules arm_rules;
for(unsigned int arm_idx = 0; arm_idx < node.m_arms.size(); arm_idx ++)
{
- DEBUG("ARM " << arm_idx);
+ TRACE_FUNCTION_FR("ARM " << arm_idx, "ARM" << arm_idx);
/*const*/ auto& arm = node.m_arms[arm_idx];
ArmCode ac;
@@ -272,7 +273,7 @@ void MIR_LowerHIR_Match( MirBuilder& builder, MirConverter& conv, ::HIR::ExprNod
ac.destructures.push_back( builder.new_bb_unlinked() );
builder.set_cur_block( ac.destructures.back() );
conv.destructure_from( arm.m_code->span(), pat, match_val.clone(), true );
- builder.end_split_arm( arm.m_code->span(), pat_scope, true );
+ builder.end_split_arm( arm.m_code->span(), pat_scope, /*reachable=*/false ); // HACK: Mark as not reachable, this scope isn't for codegen.
builder.pause_cur_block();
// NOTE: Paused block resumed upon successful match
}