From 137ef62d7107437aa8d1fb860bf63a58dce634b8 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Tue, 31 Jan 2017 22:18:41 +0800 Subject: MIR Optimise - Handle empty loops --- src/mir/optimise.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') 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 ); -- cgit v1.2.3