summaryrefslogtreecommitdiff
path: root/src/mir
diff options
context:
space:
mode:
Diffstat (limited to 'src/mir')
-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 );