diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index c519461887d..92a37ab36d9 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -3775,7 +3775,7 @@ fn trans_fail_expr(bcx: @block_ctxt, sp_opt: option::t, bcx, expr_res.val, type_of_or_i8( bcx, ty::mk_mach_uint(tcx, ast::ty_u8))); ret trans_fail_value(bcx, sp_opt, data); - } else if bcx.unreachable { + } else if bcx.unreachable || ty::type_is_bot(tcx, e_ty) { ret bcx; } else { bcx_ccx(bcx).sess.span_bug( diff --git a/src/test/run-fail/do-while-fail.rs b/src/test/run-fail/do-while-fail.rs new file mode 100644 index 00000000000..38c6d38f309 --- /dev/null +++ b/src/test/run-fail/do-while-fail.rs @@ -0,0 +1,4 @@ +// error-pattern:giraffe +fn main() { + fail do { fail "giraffe" } while true; +}