From 02cbc0ef8ce62ca2c903052fdf13e33af152a38d Mon Sep 17 00:00:00 2001 From: Eduard Burtescu Date: Tue, 7 Jun 2016 10:04:31 +0300 Subject: [PATCH] trans: don't create allocas anywhere other than the entry block. --- src/librustc_trans/mir/block.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/librustc_trans/mir/block.rs b/src/librustc_trans/mir/block.rs index b7aca4c8d7fe..56bf803fcd81 100644 --- a/src/librustc_trans/mir/block.rs +++ b/src/librustc_trans/mir/block.rs @@ -894,8 +894,11 @@ impl<'bcx, 'tcx> MirContext<'bcx, 'tcx> { // bitcasting to the struct type yields invalid cast errors. // We instead thus allocate some scratch space... - let llscratch = bcx.alloca(llcast_ty, "fn_ret_cast"); - bcx.with_block(|bcx| base::call_lifetime_start(bcx, llscratch)); + let llscratch = bcx.with_block(|bcx| { + let alloca = base::alloca(bcx, llcast_ty, "fn_ret_cast"); + base::call_lifetime_start(bcx, alloca); + alloca + }); // ...where we first store the value... bcx.store(op.immediate(), llscratch);