summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2017-01-31 22:18:41 +0800
committerJohn Hodge <tpg@mutabah.net>2017-01-31 22:18:41 +0800
commit137ef62d7107437aa8d1fb860bf63a58dce634b8 (patch)
tree833f3701212460a0fc1e28460cddbb4ba64808f6 /src
parent85473b0da8f5e13c9601c9661ade61892d34ccd7 (diff)
downloadmrust-137ef62d7107437aa8d1fb860bf63a58dce634b8.tar.gz
MIR Optimise - Handle empty loops
Diffstat (limited to 'src')
-rw-r--r--src/mir/optimise.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mir/optimise.cpp b/src/mir/optimise.cpp
index b8fbe20e..2a3f2f70 100644
--- a/src/mir/optimise.cpp
+++ b/src/mir/optimise.cpp
@@ -439,7 +439,8 @@ bool MIR_Optimise_BlockSimplify(::MIR::TypeResolve& state, ::MIR::Function& fcn)
(Diverge,
),
(Goto,
- e = get_new_target(state, e);
+ if( &fcn.blocks[e] != &block )
+ e = get_new_target(state, e);
),
(Panic,
),
@@ -498,6 +499,8 @@ bool MIR_Optimise_BlockSimplify(::MIR::TypeResolve& state, ::MIR::Function& fcn)
auto tgt = block.terminator.as_Goto();
if( uses[tgt] != 1 )
break ;
+ if( tgt == i )
+ break;
DEBUG("Append bb " << tgt << " to bb" << i);
assert( &fcn.blocks[tgt] != &block );