From 72aab7ade4e333896f4a553ad59b73346dcd8f43 Mon Sep 17 00:00:00 2001 From: Eduard-Mihai Burtescu Date: Sun, 7 May 2017 17:30:55 +0300 Subject: [PATCH] rustc_mir: remove unnecessary drop scope for constants. --- src/librustc_mir/build/mod.rs | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/librustc_mir/build/mod.rs b/src/librustc_mir/build/mod.rs index cecfd6e4c242..b441f509b535 100644 --- a/src/librustc_mir/build/mod.rs +++ b/src/librustc_mir/build/mod.rs @@ -401,22 +401,15 @@ pub fn construct_const<'a, 'gcx, 'tcx>(hir: Cx<'a, 'gcx, 'tcx>, let span = tcx.hir.span(owner_id); let mut builder = Builder::new(hir.clone(), span, 0, ty); - let extent = hir.region_maps.temporary_scope(tcx, ast_expr.id) - .unwrap_or(tcx.item_extent(owner_id)); let mut block = START_BLOCK; - let _ = builder.in_scope(extent, block, |builder| { - let expr = builder.hir.mirror(ast_expr); - unpack!(block = builder.into(&Lvalue::Local(RETURN_POINTER), block, expr)); + let expr = builder.hir.mirror(ast_expr); + unpack!(block = builder.into_expr(&Lvalue::Local(RETURN_POINTER), block, expr)); - let source_info = builder.source_info(span); - let return_block = builder.return_block(); - builder.cfg.terminate(block, source_info, - TerminatorKind::Goto { target: return_block }); - builder.cfg.terminate(return_block, source_info, - TerminatorKind::Return); + let source_info = builder.source_info(span); + builder.cfg.terminate(block, source_info, TerminatorKind::Return); - return_block.unit() - }); + // Constants can't `return` so a return block should not be created. + assert_eq!(builder.cached_return_block, None); builder.finish(vec![], ty) }