diff --git a/src/comp/middle/trans_alt.rs b/src/comp/middle/trans_alt.rs index 56948101f860af7e2da2613a465c96314a1e030a..108e3acf12e2a547f4a045c3e3bd2963987f3e70 100644 --- a/src/comp/middle/trans_alt.rs +++ b/src/comp/middle/trans_alt.rs @@ -304,9 +304,10 @@ fn compile_submatch(bcx: @block_ctxt, m: &match, vals: [ValueRef], bcx.fcx.lllocals.insert (val, option::get(assoc(key, m[0].bound))); } - let {bcx: guard_cx, val: guard_val} = + let {bcx: guard_bcx, val: guard_val} = trans::trans_expr(guard_cx, e); - guard_cx.build.CondBr(guard_val, next_cx.llbb, else_cx.llbb); + guard_bcx = trans::trans_block_cleanups(guard_bcx, guard_cx); + guard_bcx.build.CondBr(guard_val, next_cx.llbb, else_cx.llbb); compile_submatch(else_cx, vec::slice(m, 1u, vec::len(m)), vals, f, exits); bcx = next_cx;