about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEduard-Mihai Burtescu <edy.burt@gmail.com>2017-09-01 22:53:54 +0300
committerEduard-Mihai Burtescu <edy.burt@gmail.com>2017-09-02 02:17:38 +0300
commit02ec0ae066dd3367107b81c6cd7193f4247074df (patch)
treeda7ebf6f61568a99fd0062489c2f223c32e730a2
parentdc563efd98e83fab93e0d9fe198f45a2e95b1e7e (diff)
downloadrust-02ec0ae066dd3367107b81c6cd7193f4247074df.tar.gz
rust-02ec0ae066dd3367107b81c6cd7193f4247074df.zip
rustc_mir: always emit StorageLive even without a matching StorageDead.
-rw-r--r--src/librustc_mir/build/expr/as_rvalue.rs8
-rw-r--r--src/librustc_mir/build/expr/as_temp.rs2
2 files changed, 5 insertions, 5 deletions
diff --git a/src/librustc_mir/build/expr/as_rvalue.rs b/src/librustc_mir/build/expr/as_rvalue.rs
index da375e791bc..bde5f58618f 100644
--- a/src/librustc_mir/build/expr/as_rvalue.rs
+++ b/src/librustc_mir/build/expr/as_rvalue.rs
@@ -97,12 +97,12 @@ impl<'a, 'gcx, 'tcx> Builder<'a, 'gcx, 'tcx> {
             ExprKind::Box { value } => {
                 let value = this.hir.mirror(value);
                 let result = this.temp(expr.ty, expr_span);
+                this.cfg.push(block, Statement {
+                    source_info,
+                    kind: StatementKind::StorageLive(result.clone())
+                });
                 if let Some(scope) = scope {
                     // schedule a shallow free of that memory, lest we unwind:
-                    this.cfg.push(block, Statement {
-                        source_info,
-                        kind: StatementKind::StorageLive(result.clone())
-                    });
                     this.schedule_drop(expr_span, scope, &result, value.ty);
                 }
 
diff --git a/src/librustc_mir/build/expr/as_temp.rs b/src/librustc_mir/build/expr/as_temp.rs
index 4f248ddb0e2..22ae81217e5 100644
--- a/src/librustc_mir/build/expr/as_temp.rs
+++ b/src/librustc_mir/build/expr/as_temp.rs
@@ -50,7 +50,7 @@ impl<'a, 'gcx, 'tcx> Builder<'a, 'gcx, 'tcx> {
         let expr_ty = expr.ty.clone();
         let temp = this.temp(expr_ty.clone(), expr_span);
 
-        if !expr_ty.is_never() && temp_lifetime.is_some() {
+        if !expr_ty.is_never() {
             this.cfg.push(block, Statement {
                 source_info,
                 kind: StatementKind::StorageLive(temp.clone())