From 1ff88982fe07b341c79345277f857211eccc5a5e Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Fri, 12 Nov 2010 10:15:40 -0800 Subject: [PATCH] Stop translating a block when a sub-statement terminates the llvm bb. --- src/comp/middle/trans.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index bd1836b5cbe..17d1a141125 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -1131,6 +1131,11 @@ impure fn trans_block(@block_ctxt cx, &ast.block b) -> result { for (@ast.stmt s in b.node.stmts) { r = trans_stmt(bcx, *s); bcx = r.bcx; + // If we hit a terminator, control won't go any further so + // we're in dead-code land. Stop here. + if (is_terminated(bcx)) { + ret r; + } } bcx = trans_block_cleanups(bcx);