kill temp early
This commit is contained in:
parent
72070d8103
commit
1cf6d6940c
@ -8,7 +8,6 @@ pub fn deref_finder<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
|
||||
let mut patch = MirPatch::new(body);
|
||||
let (basic_blocks, local_decl) = body.basic_blocks_and_local_decls_mut();
|
||||
for (block, data) in basic_blocks.iter_enumerated_mut() {
|
||||
let statement_len = data.statements.len();
|
||||
for (i, stmt) in data.statements.iter_mut().enumerate() {
|
||||
match stmt.kind {
|
||||
StatementKind::Assign(box (og_place, Rvalue::Ref(region, borrow_knd, place))) => {
|
||||
@ -49,7 +48,7 @@ pub fn deref_finder<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
|
||||
*stmt = new_stmt;
|
||||
|
||||
// Since our job with the temp is done it should be gone
|
||||
let loc = Location { block: block, statement_index: statement_len };
|
||||
let loc = Location { block: block, statement_index: i + 1 };
|
||||
patch.add_statement(loc, StatementKind::StorageDead(temp));
|
||||
|
||||
// As all projections are off the base projection, if there are
|
||||
|
@ -38,18 +38,18 @@
|
||||
+ StorageLive(_6); // scope 2 at $DIR/derefer_test.rs:5:13: 5:26
|
||||
+ _6 = move (_2.1: &mut (i32, i32)); // scope 2 at $DIR/derefer_test.rs:5:13: 5:26
|
||||
+ _4 = &mut ((*_6).0: i32); // scope 2 at $DIR/derefer_test.rs:5:13: 5:26
|
||||
+ StorageDead(_6); // scope 3 at $DIR/derefer_test.rs:6:9: 6:10
|
||||
StorageLive(_5); // scope 3 at $DIR/derefer_test.rs:6:9: 6:10
|
||||
- _5 = &mut ((*(_2.1: &mut (i32, i32))).1: i32); // scope 3 at $DIR/derefer_test.rs:6:13: 6:26
|
||||
+ StorageLive(_7); // scope 3 at $DIR/derefer_test.rs:6:13: 6:26
|
||||
+ _7 = move (_2.1: &mut (i32, i32)); // scope 3 at $DIR/derefer_test.rs:6:13: 6:26
|
||||
+ _5 = &mut ((*_7).1: i32); // scope 3 at $DIR/derefer_test.rs:6:13: 6:26
|
||||
+ StorageDead(_7); // scope 0 at $DIR/derefer_test.rs:2:11: 7:2
|
||||
_0 = const (); // scope 0 at $DIR/derefer_test.rs:2:11: 7:2
|
||||
StorageDead(_5); // scope 3 at $DIR/derefer_test.rs:7:1: 7:2
|
||||
StorageDead(_4); // scope 2 at $DIR/derefer_test.rs:7:1: 7:2
|
||||
StorageDead(_2); // scope 1 at $DIR/derefer_test.rs:7:1: 7:2
|
||||
StorageDead(_1); // scope 0 at $DIR/derefer_test.rs:7:1: 7:2
|
||||
+ StorageDead(_6); // scope 0 at $DIR/derefer_test.rs:7:2: 7:2
|
||||
+ StorageDead(_7); // scope 0 at $DIR/derefer_test.rs:7:2: 7:2
|
||||
return; // scope 0 at $DIR/derefer_test.rs:7:2: 7:2
|
||||
+ }
|
||||
+
|
||||
|
@ -23,11 +23,11 @@ fn b(_1: &mut Box<T>) -> &mut T {
|
||||
StorageLive(_7); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
||||
_7 = move (*_4); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
||||
_6 = &mut (*_7); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
||||
StorageDead(_7); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
||||
_5 = &mut (*_6); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
||||
_3 = &mut (*_5); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
||||
StorageDead(_6); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
||||
StorageDead(_5); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
||||
StorageDead(_7); // scope 1 at $SRC_DIR/alloc/src/boxed.rs:LL:COL
|
||||
_2 = &mut (*_3); // scope 0 at $DIR/issue-58867-inline-as-ref-as-mut.rs:8:5: 8:15
|
||||
StorageDead(_4); // scope 0 at $DIR/issue-58867-inline-as-ref-as-mut.rs:8:14: 8:15
|
||||
_0 = &mut (*_2); // scope 0 at $DIR/issue-58867-inline-as-ref-as-mut.rs:8:5: 8:15
|
||||
|
Loading…
x
Reference in New Issue
Block a user