diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2023-05-07 12:19:46 +0000 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2023-05-09 17:59:35 +0000 |
| commit | 8e5910fdf26cf0db4c0002954c10500c6fcac41b (patch) | |
| tree | 3d36537b6292cd49a3ff5ffa02e00d0c73ca5b90 | |
| parent | c17e878fb86bd65b1148e7b08cbb465d396596a2 (diff) | |
| download | rust-8e5910fdf26cf0db4c0002954c10500c6fcac41b.tar.gz rust-8e5910fdf26cf0db4c0002954c10500c6fcac41b.zip | |
Separate test cases into bbs.
8 files changed, 1207 insertions, 824 deletions
diff --git a/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff b/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff index 7e79e15ccda..c8488400f90 100644 --- a/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff @@ -24,7 +24,7 @@ _5 = (*_2); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL _0 = opaque::<i32>(_5) -> bb3; // scope 0 at $DIR/reference_prop.rs:+16:13: +16:38 // mir::Constant - // + span: $DIR/reference_prop.rs:357:28: 357:34 + // + span: $DIR/reference_prop.rs:382:28: 382:34 // + literal: Const { ty: fn(i32) {opaque::<i32>}, val: Value(<ZST>) } } diff --git a/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff b/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff index 9dac0b333b8..50b2e152afd 100644 --- a/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff @@ -9,6 +9,7 @@ let mut _5: &mut i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL let mut _6: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL let mut _7: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + let mut _8: i32; // in scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL bb0: { StorageLive(_2); // scope 0 at $DIR/reference_prop.rs:+7:13: +7:27 @@ -18,33 +19,38 @@ _4 = &_2; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL _5 = &mut _3; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL (*_5) = const 7_i32; // scope 0 at $DIR/reference_prop.rs:+14:13: +14:19 - switchInt(_1) -> [1: bb1, otherwise: bb2]; // scope 0 at $DIR/reference_prop.rs:+15:13: +15:46 +- _6 = (*_4); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL ++ _6 = _2; // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + switchInt(_1) -> [1: bb1, otherwise: bb2]; // scope 0 at $DIR/reference_prop.rs:+17:13: +17:46 } bb1: { - StorageDead(_2); // scope 0 at $DIR/reference_prop.rs:+18:13: +18:27 - StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+19:13: +19:27 - goto -> bb2; // scope 0 at $DIR/reference_prop.rs:+20:13: +20:22 + StorageDead(_2); // scope 0 at $DIR/reference_prop.rs:+20:13: +20:27 + StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+21:13: +21:27 + _0 = opaque::<i32>(_6) -> bb2; // scope 0 at $DIR/reference_prop.rs:+22:13: +22:38 + // mir::Constant + // + span: $DIR/reference_prop.rs:416:28: 416:34 + // + literal: Const { ty: fn(i32) {opaque::<i32>}, val: Value(<ZST>) } } bb2: { - _6 = (*_4); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = opaque::<i32>(_6) -> bb3; // scope 0 at $DIR/reference_prop.rs:+25:13: +25:38 + _7 = (*_4); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + _0 = opaque::<i32>(_7) -> bb3; // scope 0 at $DIR/reference_prop.rs:+27:13: +27:38 // mir::Constant - // + span: $DIR/reference_prop.rs:394:28: 394:34 + // + span: $DIR/reference_prop.rs:421:28: 421:34 // + literal: Const { ty: fn(i32) {opaque::<i32>}, val: Value(<ZST>) } } bb3: { - _7 = (*_5); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL - _0 = opaque::<i32>(_7) -> bb4; // scope 0 at $DIR/reference_prop.rs:+31:13: +31:43 + _8 = (*_5); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL + _0 = opaque::<i32>(_8) -> bb4; // scope 0 at $DIR/reference_prop.rs:+33:13: +33:43 // mir::Constant - // + span: $DIR/reference_prop.rs:400:33: 400:39 + // + span: $DIR/reference_prop.rs:427:33: 427:39 // + literal: Const { ty: fn(i32) {opaque::<i32>}, val: Value(<ZST>) } } bb4: { - return; // scope 0 at $DIR/reference_prop.rs:+34:13: +34:21 + return; // scope 0 at $DIR/reference_prop.rs:+36:13: +36:21 } } diff --git a/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff b/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff index 994791072e1..08de44659e9 100644 --- a/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff @@ -16,7 +16,7 @@ _3 = (*_2); // scope 0 at $SRC_DIR/core/src/intrinsics/mir.rs:LL:COL _0 = opaque::<i32>(_3) -> bb1; // scope 0 at $DIR/reference_prop.rs:+14:13: +14:43 // mir::Constant - // + span: $DIR/reference_prop.rs:331:33: 331:39 + // + span: $DIR/reference_prop.rs:356:33: 356:39 // + literal: Const { ty: fn(i32) {opaque::<i32>}, val: Value(<ZST>) } } diff --git a/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff index 9a9d5d65234..04f5cc9d41f 100644 --- a/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff @@ -5,29 +5,41 @@ debug single => _1; // in scope 0 at $DIR/reference_prop.rs:+0:39: +0:45 debug multiple => _2; // in scope 0 at $DIR/reference_prop.rs:+0:54: +0:66 let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:75: +0:75 - let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 + let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 let _4: usize; // in scope 0 at $DIR/reference_prop.rs:+3:13: +3:14 - let _7: (); // in scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - let _8: usize; // in scope 0 at $DIR/reference_prop.rs:+10:13: +10:14 - let mut _11: &usize; // in scope 0 at $DIR/reference_prop.rs:+13:13: +13:16 - let _12: &usize; // in scope 0 at $DIR/reference_prop.rs:+13:13: +13:16 - let _14: (); // in scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - let _15: usize; // in scope 0 at $DIR/reference_prop.rs:+20:13: +20:14 - let _19: (); // in scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - let _20: usize; // in scope 0 at $DIR/reference_prop.rs:+28:13: +28:14 - let _24: (); // in scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - let _25: usize; // in scope 0 at $DIR/reference_prop.rs:+36:13: +36:14 - let _28: (); // in scope 0 at $DIR/reference_prop.rs:+39:9: +39:18 - let mut _29: &usize; // in scope 0 at $DIR/reference_prop.rs:+39:16: +39:17 - let _30: (); // in scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - let _31: usize; // in scope 0 at $DIR/reference_prop.rs:+44:13: +44:14 - let _37: (); // in scope 0 at $DIR/reference_prop.rs:+52:9: +52:19 - let mut _38: &usize; // in scope 0 at $DIR/reference_prop.rs:+52:16: +52:18 - let _39: (); // in scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 - let _40: &T; // in scope 0 at $DIR/reference_prop.rs:+57:13: +57:14 - let _42: &T; // in scope 0 at $DIR/reference_prop.rs:+63:13: +63:14 - let mut _43: &T; // in scope 0 at $DIR/reference_prop.rs:+64:20: +64:28 - let _44: &T; // in scope 0 at $DIR/reference_prop.rs:+64:20: +64:28 + let _7: (); // in scope 0 at $DIR/reference_prop.rs:+6:9: +6:19 + let mut _8: (); // in scope 0 at $DIR/reference_prop.rs:+6:16: +6:18 + let _9: (); // in scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + let _10: usize; // in scope 0 at $DIR/reference_prop.rs:+11:13: +11:14 + let mut _13: &usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:16 + let _14: &usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:16 + let _16: (); // in scope 0 at $DIR/reference_prop.rs:+17:9: +17:19 + let mut _17: (); // in scope 0 at $DIR/reference_prop.rs:+17:16: +17:18 + let _18: (); // in scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + let _19: usize; // in scope 0 at $DIR/reference_prop.rs:+22:13: +22:14 + let _23: (); // in scope 0 at $DIR/reference_prop.rs:+26:9: +26:19 + let mut _24: (); // in scope 0 at $DIR/reference_prop.rs:+26:16: +26:18 + let _25: (); // in scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + let _26: usize; // in scope 0 at $DIR/reference_prop.rs:+31:13: +31:14 + let _30: (); // in scope 0 at $DIR/reference_prop.rs:+35:9: +35:19 + let mut _31: (); // in scope 0 at $DIR/reference_prop.rs:+35:16: +35:18 + let _32: (); // in scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + let _33: usize; // in scope 0 at $DIR/reference_prop.rs:+40:13: +40:14 + let _36: (); // in scope 0 at $DIR/reference_prop.rs:+43:9: +43:18 + let mut _37: &usize; // in scope 0 at $DIR/reference_prop.rs:+43:16: +43:17 + let _38: (); // in scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + let _39: usize; // in scope 0 at $DIR/reference_prop.rs:+48:13: +48:14 + let _45: (); // in scope 0 at $DIR/reference_prop.rs:+56:9: +56:19 + let mut _46: &usize; // in scope 0 at $DIR/reference_prop.rs:+56:16: +56:18 + let _47: (); // in scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + let _48: &T; // in scope 0 at $DIR/reference_prop.rs:+61:13: +61:14 + let _50: (); // in scope 0 at $DIR/reference_prop.rs:+63:9: +63:19 + let mut _51: (); // in scope 0 at $DIR/reference_prop.rs:+63:16: +63:18 + let _52: &T; // in scope 0 at $DIR/reference_prop.rs:+68:13: +68:14 + let mut _53: &T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:28 + let _54: &T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:28 + let _56: (); // in scope 0 at $DIR/reference_prop.rs:+71:9: +71:19 + let mut _57: (); // in scope 0 at $DIR/reference_prop.rs:+71:16: +71:18 scope 1 { debug a => _4; // in scope 1 at $DIR/reference_prop.rs:+3:13: +3:14 let _5: &usize; // in scope 1 at $DIR/reference_prop.rs:+4:13: +4:14 @@ -40,78 +52,78 @@ } } scope 4 { - debug a => _8; // in scope 4 at $DIR/reference_prop.rs:+10:13: +10:14 - let _9: usize; // in scope 4 at $DIR/reference_prop.rs:+11:13: +11:15 + debug a => _10; // in scope 4 at $DIR/reference_prop.rs:+11:13: +11:14 + let _11: usize; // in scope 4 at $DIR/reference_prop.rs:+12:13: +12:15 scope 5 { - debug a2 => _9; // in scope 5 at $DIR/reference_prop.rs:+11:13: +11:15 - let mut _10: &usize; // in scope 5 at $DIR/reference_prop.rs:+12:13: +12:18 + debug a2 => _11; // in scope 5 at $DIR/reference_prop.rs:+12:13: +12:15 + let mut _12: &usize; // in scope 5 at $DIR/reference_prop.rs:+13:13: +13:18 scope 6 { - debug b => _10; // in scope 6 at $DIR/reference_prop.rs:+12:13: +12:18 - let _13: usize; // in scope 6 at $DIR/reference_prop.rs:+15:13: +15:14 + debug b => _12; // in scope 6 at $DIR/reference_prop.rs:+13:13: +13:18 + let _15: usize; // in scope 6 at $DIR/reference_prop.rs:+16:13: +16:14 scope 7 { - debug c => _13; // in scope 7 at $DIR/reference_prop.rs:+15:13: +15:14 + debug c => _15; // in scope 7 at $DIR/reference_prop.rs:+16:13: +16:14 } } } } scope 8 { - debug a => _15; // in scope 8 at $DIR/reference_prop.rs:+20:13: +20:14 - let _16: &usize; // in scope 8 at $DIR/reference_prop.rs:+21:13: +21:14 + debug a => _19; // in scope 8 at $DIR/reference_prop.rs:+22:13: +22:14 + let _20: &usize; // in scope 8 at $DIR/reference_prop.rs:+23:13: +23:14 scope 9 { - debug b => _16; // in scope 9 at $DIR/reference_prop.rs:+21:13: +21:14 - let _17: &&usize; // in scope 9 at $DIR/reference_prop.rs:+22:13: +22:14 + debug b => _20; // in scope 9 at $DIR/reference_prop.rs:+23:13: +23:14 + let _21: &&usize; // in scope 9 at $DIR/reference_prop.rs:+24:13: +24:14 scope 10 { - debug d => _17; // in scope 10 at $DIR/reference_prop.rs:+22:13: +22:14 - let _18: usize; // in scope 10 at $DIR/reference_prop.rs:+23:13: +23:14 + debug d => _21; // in scope 10 at $DIR/reference_prop.rs:+24:13: +24:14 + let _22: usize; // in scope 10 at $DIR/reference_prop.rs:+25:13: +25:14 scope 11 { - debug c => _18; // in scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 + debug c => _22; // in scope 11 at $DIR/reference_prop.rs:+25:13: +25:14 } } } } scope 12 { - debug a => _20; // in scope 12 at $DIR/reference_prop.rs:+28:13: +28:14 - let mut _21: &usize; // in scope 12 at $DIR/reference_prop.rs:+29:13: +29:18 + debug a => _26; // in scope 12 at $DIR/reference_prop.rs:+31:13: +31:14 + let mut _27: &usize; // in scope 12 at $DIR/reference_prop.rs:+32:13: +32:18 scope 13 { - debug b => _21; // in scope 13 at $DIR/reference_prop.rs:+29:13: +29:18 - let _22: &mut &usize; // in scope 13 at $DIR/reference_prop.rs:+30:13: +30:14 + debug b => _27; // in scope 13 at $DIR/reference_prop.rs:+32:13: +32:18 + let _28: &mut &usize; // in scope 13 at $DIR/reference_prop.rs:+33:13: +33:14 scope 14 { - debug d => _22; // in scope 14 at $DIR/reference_prop.rs:+30:13: +30:14 - let _23: usize; // in scope 14 at $DIR/reference_prop.rs:+31:13: +31:14 + debug d => _28; // in scope 14 at $DIR/reference_prop.rs:+33:13: +33:14 + let _29: usize; // in scope 14 at $DIR/reference_prop.rs:+34:13: +34:14 scope 15 { - debug c => _23; // in scope 15 at $DIR/reference_prop.rs:+31:13: +31:14 + debug c => _29; // in scope 15 at $DIR/reference_prop.rs:+34:13: +34:14 } } } } scope 16 { - debug a => _25; // in scope 16 at $DIR/reference_prop.rs:+36:13: +36:14 - let _26: &usize; // in scope 16 at $DIR/reference_prop.rs:+37:13: +37:14 + debug a => _33; // in scope 16 at $DIR/reference_prop.rs:+40:13: +40:14 + let _34: &usize; // in scope 16 at $DIR/reference_prop.rs:+41:13: +41:14 scope 17 { - debug b => _26; // in scope 17 at $DIR/reference_prop.rs:+37:13: +37:14 - let _27: usize; // in scope 17 at $DIR/reference_prop.rs:+38:13: +38:14 + debug b => _34; // in scope 17 at $DIR/reference_prop.rs:+41:13: +41:14 + let _35: usize; // in scope 17 at $DIR/reference_prop.rs:+42:13: +42:14 scope 18 { - debug c => _27; // in scope 18 at $DIR/reference_prop.rs:+38:13: +38:14 + debug c => _35; // in scope 18 at $DIR/reference_prop.rs:+42:13: +42:14 } } } scope 19 { - debug a => _31; // in scope 19 at $DIR/reference_prop.rs:+44:13: +44:14 - let _32: &usize; // in scope 19 at $DIR/reference_prop.rs:+45:13: +45:15 + debug a => _39; // in scope 19 at $DIR/reference_prop.rs:+48:13: +48:14 + let _40: &usize; // in scope 19 at $DIR/reference_prop.rs:+49:13: +49:15 scope 20 { - debug b1 => _32; // in scope 20 at $DIR/reference_prop.rs:+45:13: +45:15 - let _33: usize; // in scope 20 at $DIR/reference_prop.rs:+46:13: +46:14 + debug b1 => _40; // in scope 20 at $DIR/reference_prop.rs:+49:13: +49:15 + let _41: usize; // in scope 20 at $DIR/reference_prop.rs:+50:13: +50:14 scope 21 { - debug c => _33; // in scope 21 at $DIR/reference_prop.rs:+46:13: +46:14 - let _34: &usize; // in scope 21 at $DIR/reference_prop.rs:+47:13: +47:15 + debug c => _41; // in scope 21 at $DIR/reference_prop.rs:+50:13: +50:14 + let _42: &usize; // in scope 21 at $DIR/reference_prop.rs:+51:13: +51:15 scope 22 { - debug b2 => _34; // in scope 22 at $DIR/reference_prop.rs:+47:13: +47:15 - let _35: usize; // in scope 22 at $DIR/reference_prop.rs:+48:13: +48:15 + debug b2 => _42; // in scope 22 at $DIR/reference_prop.rs:+51:13: +51:15 + let _43: usize; // in scope 22 at $DIR/reference_prop.rs:+52:13: +52:15 scope 23 { - debug c2 => _35; // in scope 23 at $DIR/reference_prop.rs:+48:13: +48:15 - let _36: &usize; // in scope 23 at $DIR/reference_prop.rs:+49:13: +49:15 + debug c2 => _43; // in scope 23 at $DIR/reference_prop.rs:+52:13: +52:15 + let _44: &usize; // in scope 23 at $DIR/reference_prop.rs:+53:13: +53:15 scope 24 { - debug b3 => _36; // in scope 24 at $DIR/reference_prop.rs:+49:13: +49:15 + debug b3 => _44; // in scope 24 at $DIR/reference_prop.rs:+53:13: +53:15 } } } @@ -119,173 +131,245 @@ } } scope 25 { - debug a => _40; // in scope 25 at $DIR/reference_prop.rs:+57:13: +57:14 - let _41: T; // in scope 25 at $DIR/reference_prop.rs:+58:13: +58:14 + debug a => _48; // in scope 25 at $DIR/reference_prop.rs:+61:13: +61:14 + let _49: T; // in scope 25 at $DIR/reference_prop.rs:+62:13: +62:14 scope 26 { - debug b => _41; // in scope 26 at $DIR/reference_prop.rs:+58:13: +58:14 + debug b => _49; // in scope 26 at $DIR/reference_prop.rs:+62:13: +62:14 } } scope 27 { - debug a => _42; // in scope 27 at $DIR/reference_prop.rs:+63:13: +63:14 - let _45: T; // in scope 27 at $DIR/reference_prop.rs:+65:13: +65:14 + debug a => _52; // in scope 27 at $DIR/reference_prop.rs:+68:13: +68:14 + let _55: T; // in scope 27 at $DIR/reference_prop.rs:+70:13: +70:14 scope 28 { - debug b => _45; // in scope 28 at $DIR/reference_prop.rs:+65:13: +65:14 + debug b => _55; // in scope 28 at $DIR/reference_prop.rs:+70:13: +70:14 } } bb0: { -- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 +- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 StorageLive(_4); // scope 0 at $DIR/reference_prop.rs:+3:13: +3:14 _4 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+3:17: +3:24 StorageLive(_5); // scope 1 at $DIR/reference_prop.rs:+4:13: +4:14 _5 = &_4; // scope 1 at $DIR/reference_prop.rs:+4:17: +4:19 StorageLive(_6); // scope 2 at $DIR/reference_prop.rs:+5:13: +5:14 - _6 = (*_5); // scope 2 at $DIR/reference_prop.rs:+5:17: +5:19 -- _3 = const (); // scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 + _6 = _4; // scope 2 at $DIR/reference_prop.rs:+5:17: +5:19 - StorageDead(_6); // scope 2 at $DIR/reference_prop.rs:+6:5: +6:6 - StorageDead(_5); // scope 1 at $DIR/reference_prop.rs:+6:5: +6:6 - StorageDead(_4); // scope 0 at $DIR/reference_prop.rs:+6:5: +6:6 -- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+6:5: +6:6 -- StorageLive(_7); // scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - StorageLive(_8); // scope 0 at $DIR/reference_prop.rs:+10:13: +10:14 - _8 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+10:17: +10:24 - StorageLive(_9); // scope 4 at $DIR/reference_prop.rs:+11:13: +11:15 - _9 = const 7_usize; // scope 4 at $DIR/reference_prop.rs:+11:18: +11:25 - StorageLive(_10); // scope 5 at $DIR/reference_prop.rs:+12:13: +12:18 - _10 = &_8; // scope 5 at $DIR/reference_prop.rs:+12:21: +12:23 - StorageLive(_11); // scope 6 at $DIR/reference_prop.rs:+13:13: +13:16 -- StorageLive(_12); // scope 6 at $DIR/reference_prop.rs:+13:13: +13:16 -- _12 = &_9; // scope 6 at $DIR/reference_prop.rs:+13:13: +13:16 -- _11 = &(*_12); // scope 6 at $DIR/reference_prop.rs:+13:13: +13:16 -+ _11 = &_9; // scope 6 at $DIR/reference_prop.rs:+13:13: +13:16 - _10 = move _11; // scope 6 at $DIR/reference_prop.rs:+13:9: +13:16 - StorageDead(_11); // scope 6 at $DIR/reference_prop.rs:+13:15: +13:16 -- StorageDead(_12); // scope 6 at $DIR/reference_prop.rs:+13:16: +13:17 - StorageLive(_13); // scope 6 at $DIR/reference_prop.rs:+15:13: +15:14 - _13 = (*_10); // scope 6 at $DIR/reference_prop.rs:+15:17: +15:19 -- _7 = const (); // scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - StorageDead(_13); // scope 6 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_10); // scope 5 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_9); // scope 4 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_8); // scope 0 at $DIR/reference_prop.rs:+16:5: +16:6 -- StorageDead(_7); // scope 0 at $DIR/reference_prop.rs:+16:5: +16:6 -- StorageLive(_14); // scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - StorageLive(_15); // scope 0 at $DIR/reference_prop.rs:+20:13: +20:14 - _15 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+20:17: +20:24 - StorageLive(_16); // scope 8 at $DIR/reference_prop.rs:+21:13: +21:14 - _16 = &_15; // scope 8 at $DIR/reference_prop.rs:+21:17: +21:19 - StorageLive(_17); // scope 9 at $DIR/reference_prop.rs:+22:13: +22:14 - _17 = &_16; // scope 9 at $DIR/reference_prop.rs:+22:17: +22:19 - StorageLive(_18); // scope 10 at $DIR/reference_prop.rs:+23:13: +23:14 - _18 = (*_16); // scope 10 at $DIR/reference_prop.rs:+23:17: +23:19 -- _14 = const (); // scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - StorageDead(_18); // scope 10 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_17); // scope 9 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_16); // scope 8 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_15); // scope 0 at $DIR/reference_prop.rs:+24:5: +24:6 -- StorageDead(_14); // scope 0 at $DIR/reference_prop.rs:+24:5: +24:6 -- StorageLive(_19); // scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - StorageLive(_20); // scope 0 at $DIR/reference_prop.rs:+28:13: +28:14 - _20 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+28:17: +28:24 - StorageLive(_21); // scope 12 at $DIR/reference_prop.rs:+29:13: +29:18 - _21 = &_20; // scope 12 at $DIR/reference_prop.rs:+29:21: +29:23 - StorageLive(_22); // scope 13 at $DIR/reference_prop.rs:+30:13: +30:14 - _22 = &mut _21; // scope 13 at $DIR/reference_prop.rs:+30:17: +30:23 - StorageLive(_23); // scope 14 at $DIR/reference_prop.rs:+31:13: +31:14 - _23 = (*_21); // scope 14 at $DIR/reference_prop.rs:+31:17: +31:19 -- _19 = const (); // scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - StorageDead(_23); // scope 14 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_22); // scope 13 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_21); // scope 12 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_20); // scope 0 at $DIR/reference_prop.rs:+32:5: +32:6 -- StorageDead(_19); // scope 0 at $DIR/reference_prop.rs:+32:5: +32:6 -- StorageLive(_24); // scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - StorageLive(_25); // scope 0 at $DIR/reference_prop.rs:+36:13: +36:14 - _25 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+36:17: +36:24 - StorageLive(_26); // scope 16 at $DIR/reference_prop.rs:+37:13: +37:14 - _26 = &_25; // scope 16 at $DIR/reference_prop.rs:+37:17: +37:19 - StorageLive(_27); // scope 17 at $DIR/reference_prop.rs:+38:13: +38:14 -- _27 = (*_26); // scope 17 at $DIR/reference_prop.rs:+38:17: +38:19 -+ _27 = _25; // scope 17 at $DIR/reference_prop.rs:+38:17: +38:19 - StorageLive(_28); // scope 18 at $DIR/reference_prop.rs:+39:9: +39:18 - StorageLive(_29); // scope 18 at $DIR/reference_prop.rs:+39:16: +39:17 - _29 = _26; // scope 18 at $DIR/reference_prop.rs:+39:16: +39:17 - _28 = opaque::<&usize>(move _29) -> bb1; // scope 18 at $DIR/reference_prop.rs:+39:9: +39:18 + StorageLive(_7); // scope 3 at $DIR/reference_prop.rs:+6:9: +6:19 + StorageLive(_8); // scope 3 at $DIR/reference_prop.rs:+6:16: +6:18 + _8 = (); // scope 3 at $DIR/reference_prop.rs:+6:16: +6:18 + _7 = opaque::<()>(move _8) -> bb1; // scope 3 at $DIR/reference_prop.rs:+6:9: +6:19 // mir::Constant - // + span: $DIR/reference_prop.rs:48:9: 48:15 - // + literal: Const { ty: fn(&usize) {opaque::<&usize>}, val: Value(<ZST>) } + // + span: $DIR/reference_prop.rs:15:9: 15:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } } bb1: { - StorageDead(_29); // scope 18 at $DIR/reference_prop.rs:+39:17: +39:18 - StorageDead(_28); // scope 18 at $DIR/reference_prop.rs:+39:18: +39:19 -- _24 = const (); // scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - StorageDead(_27); // scope 17 at $DIR/reference_prop.rs:+40:5: +40:6 - StorageDead(_26); // scope 16 at $DIR/reference_prop.rs:+40:5: +40:6 - StorageDead(_25); // scope 0 at $DIR/reference_prop.rs:+40:5: +40:6 -- StorageDead(_24); // scope 0 at $DIR/reference_prop.rs:+40:5: +40:6 -- StorageLive(_30); // scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - StorageLive(_31); // scope 0 at $DIR/reference_prop.rs:+44:13: +44:14 - _31 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+44:17: +44:24 - StorageLive(_32); // scope 19 at $DIR/reference_prop.rs:+45:13: +45:15 - _32 = &_31; // scope 19 at $DIR/reference_prop.rs:+45:18: +45:20 - StorageLive(_33); // scope 20 at $DIR/reference_prop.rs:+46:13: +46:14 -- _33 = (*_32); // scope 20 at $DIR/reference_prop.rs:+46:17: +46:20 -+ _33 = _31; // scope 20 at $DIR/reference_prop.rs:+46:17: +46:20 - StorageLive(_34); // scope 21 at $DIR/reference_prop.rs:+47:13: +47:15 - _34 = _32; // scope 21 at $DIR/reference_prop.rs:+47:18: +47:20 - StorageLive(_35); // scope 22 at $DIR/reference_prop.rs:+48:13: +48:15 -- _35 = (*_34); // scope 22 at $DIR/reference_prop.rs:+48:18: +48:21 -+ _35 = _31; // scope 22 at $DIR/reference_prop.rs:+48:18: +48:21 - StorageLive(_36); // scope 23 at $DIR/reference_prop.rs:+49:13: +49:15 - _36 = _34; // scope 23 at $DIR/reference_prop.rs:+49:18: +49:20 - StorageLive(_37); // scope 24 at $DIR/reference_prop.rs:+52:9: +52:19 - StorageLive(_38); // scope 24 at $DIR/reference_prop.rs:+52:16: +52:18 - _38 = _36; // scope 24 at $DIR/reference_prop.rs:+52:16: +52:18 - _37 = opaque::<&usize>(move _38) -> bb2; // scope 24 at $DIR/reference_prop.rs:+52:9: +52:19 + StorageDead(_8); // scope 3 at $DIR/reference_prop.rs:+6:18: +6:19 + StorageDead(_7); // scope 3 at $DIR/reference_prop.rs:+6:19: +6:20 +- _3 = const (); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 + StorageDead(_6); // scope 2 at $DIR/reference_prop.rs:+7:5: +7:6 + StorageDead(_5); // scope 1 at $DIR/reference_prop.rs:+7:5: +7:6 + StorageDead(_4); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 +- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 +- StorageLive(_9); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + StorageLive(_10); // scope 0 at $DIR/reference_prop.rs:+11:13: +11:14 + _10 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+11:17: +11:24 + StorageLive(_11); // scope 4 at $DIR/reference_prop.rs:+12:13: +12:15 + _11 = const 7_usize; // scope 4 at $DIR/reference_prop.rs:+12:18: +12:25 + StorageLive(_12); // scope 5 at $DIR/reference_prop.rs:+13:13: +13:18 + _12 = &_10; // scope 5 at $DIR/reference_prop.rs:+13:21: +13:23 + StorageLive(_13); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 +- StorageLive(_14); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 +- _14 = &_11; // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 +- _13 = &(*_14); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 ++ _13 = &_11; // scope 6 at $DIR/reference_prop.rs:+14:13: +14:16 + _12 = move _13; // scope 6 at $DIR/reference_prop.rs:+14:9: +14:16 + StorageDead(_13); // scope 6 at $DIR/reference_prop.rs:+14:15: +14:16 +- StorageDead(_14); // scope 6 at $DIR/reference_prop.rs:+14:16: +14:17 + StorageLive(_15); // scope 6 at $DIR/reference_prop.rs:+16:13: +16:14 + _15 = (*_12); // scope 6 at $DIR/reference_prop.rs:+16:17: +16:19 + StorageLive(_16); // scope 7 at $DIR/reference_prop.rs:+17:9: +17:19 + StorageLive(_17); // scope 7 at $DIR/reference_prop.rs:+17:16: +17:18 + _17 = (); // scope 7 at $DIR/reference_prop.rs:+17:16: +17:18 + _16 = opaque::<()>(move _17) -> bb2; // scope 7 at $DIR/reference_prop.rs:+17:9: +17:19 // mir::Constant - // + span: $DIR/reference_prop.rs:61:9: 61:15 - // + literal: Const { ty: fn(&usize) {opaque::<&usize>}, val: Value(<ZST>) } + // + span: $DIR/reference_prop.rs:26:9: 26:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } } bb2: { - StorageDead(_38); // scope 24 at $DIR/reference_prop.rs:+52:18: +52:19 - StorageDead(_37); // scope 24 at $DIR/reference_prop.rs:+52:19: +52:20 -- _30 = const (); // scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - StorageDead(_36); // scope 23 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_35); // scope 22 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_34); // scope 21 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_33); // scope 20 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_32); // scope 19 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_31); // scope 0 at $DIR/reference_prop.rs:+53:5: +53:6 -- StorageDead(_30); // scope 0 at $DIR/reference_prop.rs:+53:5: +53:6 -- StorageLive(_39); // scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 - StorageLive(_40); // scope 0 at $DIR/reference_prop.rs:+57:13: +57:14 - _40 = &(*_1); // scope 0 at $DIR/reference_prop.rs:+57:17: +57:25 - StorageLive(_41); // scope 25 at $DIR/reference_prop.rs:+58:13: +58:14 -- _41 = (*_40); // scope 25 at $DIR/reference_prop.rs:+58:17: +58:19 -- _39 = const (); // scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 -+ _41 = (*_1); // scope 25 at $DIR/reference_prop.rs:+58:17: +58:19 - StorageDead(_41); // scope 25 at $DIR/reference_prop.rs:+59:5: +59:6 - StorageDead(_40); // scope 0 at $DIR/reference_prop.rs:+59:5: +59:6 -- StorageDead(_39); // scope 0 at $DIR/reference_prop.rs:+59:5: +59:6 - StorageLive(_42); // scope 0 at $DIR/reference_prop.rs:+63:13: +63:14 - _42 = &(*_2); // scope 0 at $DIR/reference_prop.rs:+63:17: +63:27 - StorageLive(_43); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:28 -- StorageLive(_44); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:28 -- _44 = &(*_1); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:28 -- _43 = &(*_44); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:28 -+ _43 = &(*_1); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:28 - _2 = move _43; // scope 27 at $DIR/reference_prop.rs:+64:9: +64:28 - StorageDead(_43); // scope 27 at $DIR/reference_prop.rs:+64:27: +64:28 -- StorageDead(_44); // scope 27 at $DIR/reference_prop.rs:+64:28: +64:29 - StorageLive(_45); // scope 27 at $DIR/reference_prop.rs:+65:13: +65:14 - _45 = (*_42); // scope 27 at $DIR/reference_prop.rs:+65:17: +65:19 - _0 = const (); // scope 0 at $DIR/reference_prop.rs:+62:5: +66:6 - StorageDead(_45); // scope 27 at $DIR/reference_prop.rs:+66:5: +66:6 - StorageDead(_42); // scope 0 at $DIR/reference_prop.rs:+66:5: +66:6 - return; // scope 0 at $DIR/reference_prop.rs:+67:2: +67:2 + StorageDead(_17); // scope 7 at $DIR/reference_prop.rs:+17:18: +17:19 + StorageDead(_16); // scope 7 at $DIR/reference_prop.rs:+17:19: +17:20 +- _9 = const (); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + StorageDead(_15); // scope 6 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_12); // scope 5 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_11); // scope 4 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_10); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 +- StorageDead(_9); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 +- StorageLive(_18); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + StorageLive(_19); // scope 0 at $DIR/reference_prop.rs:+22:13: +22:14 + _19 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+22:17: +22:24 + StorageLive(_20); // scope 8 at $DIR/reference_prop.rs:+23:13: +23:14 + _20 = &_19; // scope 8 at $DIR/reference_prop.rs:+23:17: +23:19 + StorageLive(_21); // scope 9 at $DIR/reference_prop.rs:+24:13: +24:14 + _21 = &_20; // scope 9 at $DIR/reference_prop.rs:+24:17: +24:19 + StorageLive(_22); // scope 10 at $DIR/reference_prop.rs:+25:13: +25:14 + _22 = (*_20); // scope 10 at $DIR/reference_prop.rs:+25:17: +25:19 + StorageLive(_23); // scope 11 at $DIR/reference_prop.rs:+26:9: +26:19 + StorageLive(_24); // scope 11 at $DIR/reference_prop.rs:+26:16: +26:18 + _24 = (); // scope 11 at $DIR/reference_prop.rs:+26:16: +26:18 + _23 = opaque::<()>(move _24) -> bb3; // scope 11 at $DIR/reference_prop.rs:+26:9: +26:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:35:9: 35:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb3: { + StorageDead(_24); // scope 11 at $DIR/reference_prop.rs:+26:18: +26:19 + StorageDead(_23); // scope 11 at $DIR/reference_prop.rs:+26:19: +26:20 +- _18 = const (); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + StorageDead(_22); // scope 10 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_21); // scope 9 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_20); // scope 8 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_19); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 +- StorageDead(_18); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 +- StorageLive(_25); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + StorageLive(_26); // scope 0 at $DIR/reference_prop.rs:+31:13: +31:14 + _26 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+31:17: +31:24 + StorageLive(_27); // scope 12 at $DIR/reference_prop.rs:+32:13: +32:18 + _27 = &_26; // scope 12 at $DIR/reference_prop.rs:+32:21: +32:23 + StorageLive(_28); // scope 13 at $DIR/reference_prop.rs:+33:13: +33:14 + _28 = &mut _27; // scope 13 at $DIR/reference_prop.rs:+33:17: +33:23 + StorageLive(_29); // scope 14 at $DIR/reference_prop.rs:+34:13: +34:14 + _29 = (*_27); // scope 14 at $DIR/reference_prop.rs:+34:17: +34:19 + StorageLive(_30); // scope 15 at $DIR/reference_prop.rs:+35:9: +35:19 + StorageLive(_31); // scope 15 at $DIR/reference_prop.rs:+35:16: +35:18 + _31 = (); // scope 15 at $DIR/reference_prop.rs:+35:16: +35:18 + _30 = opaque::<()>(move _31) -> bb4; // scope 15 at $DIR/reference_prop.rs:+35:9: +35:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:44:9: 44:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb4: { + StorageDead(_31); // scope 15 at $DIR/reference_prop.rs:+35:18: +35:19 + StorageDead(_30); // scope 15 at $DIR/reference_prop.rs:+35:19: +35:20 +- _25 = const (); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + StorageDead(_29); // scope 14 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_28); // scope 13 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_27); // scope 12 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_26); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 +- StorageDead(_25); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 +- StorageLive(_32); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + StorageLive(_33); // scope 0 at $DIR/reference_prop.rs:+40:13: +40:14 + _33 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+40:17: +40:24 + StorageLive(_34); // scope 16 at $DIR/reference_prop.rs:+41:13: +41:14 + _34 = &_33; // scope 16 at $DIR/reference_prop.rs:+41:17: +41:19 + StorageLive(_35); // scope 17 at $DIR/reference_prop.rs:+42:13: +42:14 +- _35 = (*_34); // scope 17 at $DIR/reference_prop.rs:+42:17: +42:19 ++ _35 = _33; // scope 17 at $DIR/reference_prop.rs:+42:17: +42:19 + StorageLive(_36); // scope 18 at $DIR/reference_prop.rs:+43:9: +43:18 + StorageLive(_37); // scope 18 at $DIR/reference_prop.rs:+43:16: +43:17 + _37 = _34; // scope 18 at $DIR/reference_prop.rs:+43:16: +43:17 + _36 = opaque::<&usize>(move _37) -> bb5; // scope 18 at $DIR/reference_prop.rs:+43:9: +43:18 + // mir::Constant + // + span: $DIR/reference_prop.rs:52:9: 52:15 + // + literal: Const { ty: fn(&usize) {opaque::<&usize>}, val: Value(<ZST>) } + } + + bb5: { + StorageDead(_37); // scope 18 at $DIR/reference_prop.rs:+43:17: +43:18 + StorageDead(_36); // scope 18 at $DIR/reference_prop.rs:+43:18: +43:19 +- _32 = const (); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + StorageDead(_35); // scope 17 at $DIR/reference_prop.rs:+44:5: +44:6 + StorageDead(_34); // scope 16 at $DIR/reference_prop.rs:+44:5: +44:6 + StorageDead(_33); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 +- StorageDead(_32); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 +- StorageLive(_38); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + StorageLive(_39); // scope 0 at $DIR/reference_prop.rs:+48:13: +48:14 + _39 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+48:17: +48:24 + StorageLive(_40); // scope 19 at $DIR/reference_prop.rs:+49:13: +49:15 + _40 = &_39; // scope 19 at $DIR/reference_prop.rs:+49:18: +49:20 + StorageLive(_41); // scope 20 at $DIR/reference_prop.rs:+50:13: +50:14 +- _41 = (*_40); // scope 20 at $DIR/reference_prop.rs:+50:17: +50:20 ++ _41 = _39; // scope 20 at $DIR/reference_prop.rs:+50:17: +50:20 + StorageLive(_42); // scope 21 at $DIR/reference_prop.rs:+51:13: +51:15 + _42 = _40; // scope 21 at $DIR/reference_prop.rs:+51:18: +51:20 + StorageLive(_43); // scope 22 at $DIR/reference_prop.rs:+52:13: +52:15 +- _43 = (*_42); // scope 22 at $DIR/reference_prop.rs:+52:18: +52:21 ++ _43 = _39; // scope 22 at $DIR/reference_prop.rs:+52:18: +52:21 + StorageLive(_44); // scope 23 at $DIR/reference_prop.rs:+53:13: +53:15 + _44 = _42; // scope 23 at $DIR/reference_prop.rs:+53:18: +53:20 + StorageLive(_45); // scope 24 at $DIR/reference_prop.rs:+56:9: +56:19 + StorageLive(_46); // scope 24 at $DIR/reference_prop.rs:+56:16: +56:18 + _46 = _44; // scope 24 at $DIR/reference_prop.rs:+56:16: +56:18 + _45 = opaque::<&usize>(move _46) -> bb6; // scope 24 at $DIR/reference_prop.rs:+56:9: +56:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:65:9: 65:15 + // + literal: Const { ty: fn(&usize) {opaque::<&usize>}, val: Value(<ZST>) } + } + + bb6: { + StorageDead(_46); // scope 24 at $DIR/reference_prop.rs:+56:18: +56:19 + StorageDead(_45); // scope 24 at $DIR/reference_prop.rs:+56:19: +56:20 +- _38 = const (); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + StorageDead(_44); // scope 23 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_43); // scope 22 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_42); // scope 21 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_41); // scope 20 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_40); // scope 19 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_39); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 +- StorageDead(_38); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 +- StorageLive(_47); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + StorageLive(_48); // scope 0 at $DIR/reference_prop.rs:+61:13: +61:14 + _48 = &(*_1); // scope 0 at $DIR/reference_prop.rs:+61:17: +61:25 + StorageLive(_49); // scope 25 at $DIR/reference_prop.rs:+62:13: +62:14 +- _49 = (*_48); // scope 25 at $DIR/reference_prop.rs:+62:17: +62:19 ++ _49 = (*_1); // scope 25 at $DIR/reference_prop.rs:+62:17: +62:19 + StorageLive(_50); // scope 26 at $DIR/reference_prop.rs:+63:9: +63:19 + StorageLive(_51); // scope 26 at $DIR/reference_prop.rs:+63:16: +63:18 + _51 = (); // scope 26 at $DIR/reference_prop.rs:+63:16: +63:18 + _50 = opaque::<()>(move _51) -> bb7; // scope 26 at $DIR/reference_prop.rs:+63:9: +63:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:72:9: 72:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb7: { + StorageDead(_51); // scope 26 at $DIR/reference_prop.rs:+63:18: +63:19 + StorageDead(_50); // scope 26 at $DIR/reference_prop.rs:+63:19: +63:20 +- _47 = const (); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + StorageDead(_49); // scope 25 at $DIR/reference_prop.rs:+64:5: +64:6 + StorageDead(_48); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 +- StorageDead(_47); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 + StorageLive(_52); // scope 0 at $DIR/reference_prop.rs:+68:13: +68:14 + _52 = &(*_2); // scope 0 at $DIR/reference_prop.rs:+68:17: +68:27 + StorageLive(_53); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 +- StorageLive(_54); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 +- _54 = &(*_1); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 +- _53 = &(*_54); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 ++ _53 = &(*_1); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:28 + _2 = move _53; // scope 27 at $DIR/reference_prop.rs:+69:9: +69:28 + StorageDead(_53); // scope 27 at $DIR/reference_prop.rs:+69:27: +69:28 +- StorageDead(_54); // scope 27 at $DIR/reference_prop.rs:+69:28: +69:29 + StorageLive(_55); // scope 27 at $DIR/reference_prop.rs:+70:13: +70:14 + _55 = (*_52); // scope 27 at $DIR/reference_prop.rs:+70:17: +70:19 + StorageLive(_56); // scope 28 at $DIR/reference_prop.rs:+71:9: +71:19 + StorageLive(_57); // scope 28 at $DIR/reference_prop.rs:+71:16: +71:18 + _57 = (); // scope 28 at $DIR/reference_prop.rs:+71:16: +71:18 + _56 = opaque::<()>(move _57) -> bb8; // scope 28 at $DIR/reference_prop.rs:+71:9: +71:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:80:9: 80:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb8: { + StorageDead(_57); // scope 28 at $DIR/reference_prop.rs:+71:18: +71:19 + StorageDead(_56); // scope 28 at $DIR/reference_prop.rs:+71:19: +71:20 + _0 = const (); // scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 + StorageDead(_55); // scope 27 at $DIR/reference_prop.rs:+72:5: +72:6 + StorageDead(_52); // scope 0 at $DIR/reference_prop.rs:+72:5: +72:6 + return; // scope 0 at $DIR/reference_prop.rs:+73:2: +73:2 } } diff --git a/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff index 8edc8104f82..c1c08475332 100644 --- a/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff @@ -5,20 +5,34 @@ debug single => _1; // in scope 0 at $DIR/reference_prop.rs:+0:45: +0:51 debug multiple => _2; // in scope 0 at $DIR/reference_prop.rs:+0:63: +0:75 let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:87: +0:87 - let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 - let _7: (); // in scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - let mut _11: *const usize; // in scope 0 at $DIR/reference_prop.rs:+13:13: +13:26 - let _13: (); // in scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - let _18: (); // in scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - let _23: (); // in scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - let _27: (); // in scope 0 at $DIR/reference_prop.rs:+39:9: +39:18 - let mut _28: *const usize; // in scope 0 at $DIR/reference_prop.rs:+39:16: +39:17 - let _29: (); // in scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - let _36: (); // in scope 0 at $DIR/reference_prop.rs:+52:9: +52:19 - let mut _37: *const usize; // in scope 0 at $DIR/reference_prop.rs:+52:16: +52:18 - let _38: (); // in scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 - let _41: (); // in scope 0 at $DIR/reference_prop.rs:+62:5: +66:6 - let mut _43: *const T; // in scope 0 at $DIR/reference_prop.rs:+64:20: +64:38 + let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 + let _7: (); // in scope 0 at $DIR/reference_prop.rs:+6:9: +6:19 + let mut _8: (); // in scope 0 at $DIR/reference_prop.rs:+6:16: +6:18 + let _9: (); // in scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + let mut _13: *const usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:26 + let _15: (); // in scope 0 at $DIR/reference_prop.rs:+17:9: +17:19 + let mut _16: (); // in scope 0 at $DIR/reference_prop.rs:+17:16: +17:18 + let _17: (); // in scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + let _22: (); // in scope 0 at $DIR/reference_prop.rs:+26:9: +26:19 + let mut _23: (); // in scope 0 at $DIR/reference_prop.rs:+26:16: +26:18 + let _24: (); // in scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + let _29: (); // in scope 0 at $DIR/reference_prop.rs:+35:9: +35:19 + let mut _30: (); // in scope 0 at $DIR/reference_prop.rs:+35:16: +35:18 + let _31: (); // in scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + let _35: (); // in scope 0 at $DIR/reference_prop.rs:+43:9: +43:18 + let mut _36: *const usize; // in scope 0 at $DIR/reference_prop.rs:+43:16: +43:17 + let _37: (); // in scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + let _44: (); // in scope 0 at $DIR/reference_prop.rs:+56:9: +56:19 + let mut _45: *const usize; // in scope 0 at $DIR/reference_prop.rs:+56:16: +56:18 + let _46: (); // in scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + let _49: (); // in scope 0 at $DIR/reference_prop.rs:+63:9: +63:19 + let mut _50: (); // in scope 0 at $DIR/reference_prop.rs:+63:16: +63:18 + let _51: (); // in scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 + let mut _53: *const T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:38 + let _55: (); // in scope 0 at $DIR/reference_prop.rs:+71:9: +71:19 + let mut _56: (); // in scope 0 at $DIR/reference_prop.rs:+71:16: +71:18 + let _61: (); // in scope 0 at $DIR/reference_prop.rs:+80:9: +80:19 + let mut _62: (); // in scope 0 at $DIR/reference_prop.rs:+80:16: +80:18 scope 1 { let _4: usize; // in scope 1 at $DIR/reference_prop.rs:+3:13: +3:14 scope 2 { @@ -34,92 +48,92 @@ } } scope 5 { - let _8: usize; // in scope 5 at $DIR/reference_prop.rs:+10:13: +10:14 + let _10: usize; // in scope 5 at $DIR/reference_prop.rs:+11:13: +11:14 scope 6 { - debug a => _8; // in scope 6 at $DIR/reference_prop.rs:+10:13: +10:14 - let _9: usize; // in scope 6 at $DIR/reference_prop.rs:+11:13: +11:15 + debug a => _10; // in scope 6 at $DIR/reference_prop.rs:+11:13: +11:14 + let _11: usize; // in scope 6 at $DIR/reference_prop.rs:+12:13: +12:15 scope 7 { - debug a2 => _9; // in scope 7 at $DIR/reference_prop.rs:+11:13: +11:15 - let mut _10: *const usize; // in scope 7 at $DIR/reference_prop.rs:+12:13: +12:18 + debug a2 => _11; // in scope 7 at $DIR/reference_prop.rs:+12:13: +12:15 + let mut _12: *const usize; // in scope 7 at $DIR/reference_prop.rs:+13:13: +13:18 scope 8 { - debug b => _10; // in scope 8 at $DIR/reference_prop.rs:+12:13: +12:18 - let _12: usize; // in scope 8 at $DIR/reference_prop.rs:+15:13: +15:14 + debug b => _12; // in scope 8 at $DIR/reference_prop.rs:+13:13: +13:18 + let _14: usize; // in scope 8 at $DIR/reference_prop.rs:+16:13: +16:14 scope 9 { - debug c => _12; // in scope 9 at $DIR/reference_prop.rs:+15:13: +15:14 + debug c => _14; // in scope 9 at $DIR/reference_prop.rs:+16:13: +16:14 } } } } } scope 10 { - let _14: usize; // in scope 10 at $DIR/reference_prop.rs:+20:13: +20:14 + let _18: usize; // in scope 10 at $DIR/reference_prop.rs:+22:13: +22:14 scope 11 { - debug a => _14; // in scope 11 at $DIR/reference_prop.rs:+20:13: +20:14 - let _15: *const usize; // in scope 11 at $DIR/reference_prop.rs:+21:13: +21:14 + debug a => _18; // in scope 11 at $DIR/reference_prop.rs:+22:13: +22:14 + let _19: *const usize; // in scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 scope 12 { - debug b => _15; // in scope 12 at $DIR/reference_prop.rs:+21:13: +21:14 - let _16: &*const usize; // in scope 12 at $DIR/reference_prop.rs:+22:13: +22:14 + debug b => _19; // in scope 12 at $DIR/reference_prop.rs:+23:13: +23:14 + let _20: &*const usize; // in scope 12 at $DIR/reference_prop.rs:+24:13: +24:14 scope 13 { - debug d => _16; // in scope 13 at $DIR/reference_prop.rs:+22:13: +22:14 - let _17: usize; // in scope 13 at $DIR/reference_prop.rs:+23:13: +23:14 + debug d => _20; // in scope 13 at $DIR/reference_prop.rs:+24:13: +24:14 + let _21: usize; // in scope 13 at $DIR/reference_prop.rs:+25:13: +25:14 scope 14 { - debug c => _17; // in scope 14 at $DIR/reference_prop.rs:+23:13: +23:14 + debug c => _21; // in scope 14 at $DIR/reference_prop.rs:+25:13: +25:14 } } } } } scope 15 { - let _19: usize; // in scope 15 at $DIR/reference_prop.rs:+28:13: +28:14 + let _25: usize; // in scope 15 at $DIR/reference_prop.rs:+31:13: +31:14 scope 16 { - debug a => _19; // in scope 16 at $DIR/reference_prop.rs:+28:13: +28:14 - let mut _20: *const usize; // in scope 16 at $DIR/reference_prop.rs:+29:13: +29:18 + debug a => _25; // in scope 16 at $DIR/reference_prop.rs:+31:13: +31:14 + let mut _26: *const usize; // in scope 16 at $DIR/reference_prop.rs:+32:13: +32:18 scope 17 { - debug b => _20; // in scope 17 at $DIR/reference_prop.rs:+29:13: +29:18 - let _21: &mut *const usize; // in scope 17 at $DIR/reference_prop.rs:+30:13: +30:14 + debug b => _26; // in scope 17 at $DIR/reference_prop.rs:+32:13: +32:18 + let _27: &mut *const usize; // in scope 17 at $DIR/reference_prop.rs:+33:13: +33:14 scope 18 { - debug d => _21; // in scope 18 at $DIR/reference_prop.rs:+30:13: +30:14 - let _22: usize; // in scope 18 at $DIR/reference_prop.rs:+31:13: +31:14 + debug d => _27; // in scope 18 at $DIR/reference_prop.rs:+33:13: +33:14 + let _28: usize; // in scope 18 at $DIR/reference_prop.rs:+34:13: +34:14 scope 19 { - debug c => _22; // in scope 19 at $DIR/reference_prop.rs:+31:13: +31:14 + debug c => _28; // in scope 19 at $DIR/reference_prop.rs:+34:13: +34:14 } } } } } scope 20 { - let _24: usize; // in scope 20 at $DIR/reference_prop.rs:+36:13: +36:14 + let _32: usize; // in scope 20 at $DIR/reference_prop.rs:+40:13: +40:14 scope 21 { - debug a => _24; // in scope 21 at $DIR/reference_prop.rs:+36:13: +36:14 - let _25: *const usize; // in scope 21 at $DIR/reference_prop.rs:+37:13: +37:14 + debug a => _32; // in scope 21 at $DIR/reference_prop.rs:+40:13: +40:14 + let _33: *const usize; // in scope 21 at $DIR/reference_prop.rs:+41:13: +41:14 scope 22 { - debug b => _25; // in scope 22 at $DIR/reference_prop.rs:+37:13: +37:14 - let _26: usize; // in scope 22 at $DIR/reference_prop.rs:+38:13: +38:14 + debug b => _33; // in scope 22 at $DIR/reference_prop.rs:+41:13: +41:14 + let _34: usize; // in scope 22 at $DIR/reference_prop.rs:+42:13: +42:14 scope 23 { - debug c => _26; // in scope 23 at $DIR/reference_prop.rs:+38:13: +38:14 + debug c => _34; // in scope 23 at $DIR/reference_prop.rs:+42:13: +42:14 } } } } scope 24 { - let _30: usize; // in scope 24 at $DIR/reference_prop.rs:+44:13: +44:14 + let _38: usize; // in scope 24 at $DIR/reference_prop.rs:+48:13: +48:14 scope 25 { - debug a => _30; // in scope 25 at $DIR/reference_prop.rs:+44:13: +44:14 - let _31: *const usize; // in scope 25 at $DIR/reference_prop.rs:+45:13: +45:15 + debug a => _38; // in scope 25 at $DIR/reference_prop.rs:+48:13: +48:14 + let _39: *const usize; // in scope 25 at $DIR/reference_prop.rs:+49:13: +49:15 scope 26 { - debug b1 => _31; // in scope 26 at $DIR/reference_prop.rs:+45:13: +45:15 - let _32: usize; // in scope 26 at $DIR/reference_prop.rs:+46:13: +46:14 + debug b1 => _39; // in scope 26 at $DIR/reference_prop.rs:+49:13: +49:15 + let _40: usize; // in scope 26 at $DIR/reference_prop.rs:+50:13: +50:14 scope 27 { - debug c => _32; // in scope 27 at $DIR/reference_prop.rs:+46:13: +46:14 - let _33: *const usize; // in scope 27 at $DIR/reference_prop.rs:+47:13: +47:15 + debug c => _40; // in scope 27 at $DIR/reference_prop.rs:+50:13: +50:14 + let _41: *const usize; // in scope 27 at $DIR/reference_prop.rs:+51:13: +51:15 scope 28 { - debug b2 => _33; // in scope 28 at $DIR/reference_prop.rs:+47:13: +47:15 - let _34: usize; // in scope 28 at $DIR/reference_prop.rs:+48:13: +48:15 + debug b2 => _41; // in scope 28 at $DIR/reference_prop.rs:+51:13: +51:15 + let _42: usize; // in scope 28 at $DIR/reference_prop.rs:+52:13: +52:15 scope 29 { - debug c2 => _34; // in scope 29 at $DIR/reference_prop.rs:+48:13: +48:15 - let _35: *const usize; // in scope 29 at $DIR/reference_prop.rs:+49:13: +49:15 + debug c2 => _42; // in scope 29 at $DIR/reference_prop.rs:+52:13: +52:15 + let _43: *const usize; // in scope 29 at $DIR/reference_prop.rs:+53:13: +53:15 scope 30 { - debug b3 => _35; // in scope 30 at $DIR/reference_prop.rs:+49:13: +49:15 + debug b3 => _43; // in scope 30 at $DIR/reference_prop.rs:+53:13: +53:15 } } } @@ -128,38 +142,38 @@ } } scope 31 { - let _39: *const T; // in scope 31 at $DIR/reference_prop.rs:+57:13: +57:14 + let _47: *const T; // in scope 31 at $DIR/reference_prop.rs:+61:13: +61:14 scope 32 { - debug a => _39; // in scope 32 at $DIR/reference_prop.rs:+57:13: +57:14 - let _40: T; // in scope 32 at $DIR/reference_prop.rs:+58:13: +58:14 + debug a => _47; // in scope 32 at $DIR/reference_prop.rs:+61:13: +61:14 + let _48: T; // in scope 32 at $DIR/reference_prop.rs:+62:13: +62:14 scope 33 { - debug b => _40; // in scope 33 at $DIR/reference_prop.rs:+58:13: +58:14 + debug b => _48; // in scope 33 at $DIR/reference_prop.rs:+62:13: +62:14 } } } scope 34 { - let _42: *const T; // in scope 34 at $DIR/reference_prop.rs:+63:13: +63:14 + let _52: *const T; // in scope 34 at $DIR/reference_prop.rs:+68:13: +68:14 scope 35 { - debug a => _42; // in scope 35 at $DIR/reference_prop.rs:+63:13: +63:14 - let _44: T; // in scope 35 at $DIR/reference_prop.rs:+65:13: +65:14 + debug a => _52; // in scope 35 at $DIR/reference_prop.rs:+68:13: +68:14 + let _54: T; // in scope 35 at $DIR/reference_prop.rs:+70:13: +70:14 scope 36 { - debug b => _44; // in scope 36 at $DIR/reference_prop.rs:+65:13: +65:14 + debug b => _54; // in scope 36 at $DIR/reference_prop.rs:+70:13: +70:14 } } } scope 37 { - let _45: usize; // in scope 37 at $DIR/reference_prop.rs:+70:13: +70:14 + let _57: usize; // in scope 37 at $DIR/reference_prop.rs:+76:13: +76:14 scope 38 { - debug a => _45; // in scope 38 at $DIR/reference_prop.rs:+70:13: +70:14 - let _46: *const usize; // in scope 38 at $DIR/reference_prop.rs:+71:13: +71:14 + debug a => _57; // in scope 38 at $DIR/reference_prop.rs:+76:13: +76:14 + let _58: *const usize; // in scope 38 at $DIR/reference_prop.rs:+77:13: +77:14 scope 39 { - debug b => _46; // in scope 39 at $DIR/reference_prop.rs:+71:13: +71:14 - let _47: *const usize; // in scope 39 at $DIR/reference_prop.rs:+72:13: +72:14 + debug b => _58; // in scope 39 at $DIR/reference_prop.rs:+77:13: +77:14 + let _59: *const usize; // in scope 39 at $DIR/reference_prop.rs:+78:13: +78:14 scope 40 { - debug c => _47; // in scope 40 at $DIR/reference_prop.rs:+72:13: +72:14 - let _48: usize; // in scope 40 at $DIR/reference_prop.rs:+73:13: +73:14 + debug c => _59; // in scope 40 at $DIR/reference_prop.rs:+78:13: +78:14 + let _60: usize; // in scope 40 at $DIR/reference_prop.rs:+79:13: +79:14 scope 41 { - debug e => _48; // in scope 41 at $DIR/reference_prop.rs:+73:13: +73:14 + debug e => _60; // in scope 41 at $DIR/reference_prop.rs:+79:13: +79:14 } } } @@ -167,167 +181,251 @@ } bb0: { -- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 +- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 StorageLive(_4); // scope 1 at $DIR/reference_prop.rs:+3:13: +3:14 _4 = const 5_usize; // scope 1 at $DIR/reference_prop.rs:+3:17: +3:24 StorageLive(_5); // scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 _5 = &raw const _4; // scope 2 at $DIR/reference_prop.rs:+4:17: +4:29 StorageLive(_6); // scope 3 at $DIR/reference_prop.rs:+5:13: +5:14 - _6 = (*_5); // scope 3 at $DIR/reference_prop.rs:+5:17: +5:19 -- _3 = const (); // scope 1 at $DIR/reference_prop.rs:+2:5: +6:6 + _6 = _4; // scope 3 at $DIR/reference_prop.rs:+5:17: +5:19 - StorageDead(_6); // scope 3 at $DIR/reference_prop.rs:+6:5: +6:6 - StorageDead(_5); // scope 2 at $DIR/reference_prop.rs:+6:5: +6:6 - StorageDead(_4); // scope 1 at $DIR/reference_prop.rs:+6:5: +6:6 -- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+6:5: +6:6 -- StorageLive(_7); // scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - StorageLive(_8); // scope 5 at $DIR/reference_prop.rs:+10:13: +10:14 - _8 = const 5_usize; // scope 5 at $DIR/reference_prop.rs:+10:17: +10:24 - StorageLive(_9); // scope 6 at $DIR/reference_prop.rs:+11:13: +11:15 - _9 = const 7_usize; // scope 6 at $DIR/reference_prop.rs:+11:18: +11:25 - StorageLive(_10); // scope 7 at $DIR/reference_prop.rs:+12:13: +12:18 - _10 = &raw const _8; // scope 7 at $DIR/reference_prop.rs:+12:21: +12:33 - StorageLive(_11); // scope 8 at $DIR/reference_prop.rs:+13:13: +13:26 - _11 = &raw const _9; // scope 8 at $DIR/reference_prop.rs:+13:13: +13:26 - _10 = move _11; // scope 8 at $DIR/reference_prop.rs:+13:9: +13:26 - StorageDead(_11); // scope 8 at $DIR/reference_prop.rs:+13:25: +13:26 - StorageLive(_12); // scope 8 at $DIR/reference_prop.rs:+15:13: +15:14 - _12 = (*_10); // scope 8 at $DIR/reference_prop.rs:+15:17: +15:19 -- _7 = const (); // scope 5 at $DIR/reference_prop.rs:+9:5: +16:6 - StorageDead(_12); // scope 8 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_10); // scope 7 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_9); // scope 6 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_8); // scope 5 at $DIR/reference_prop.rs:+16:5: +16:6 -- StorageDead(_7); // scope 0 at $DIR/reference_prop.rs:+16:5: +16:6 -- StorageLive(_13); // scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - StorageLive(_14); // scope 10 at $DIR/reference_prop.rs:+20:13: +20:14 - _14 = const 5_usize; // scope 10 at $DIR/reference_prop.rs:+20:17: +20:24 - StorageLive(_15); // scope 11 at $DIR/reference_prop.rs:+21:13: +21:14 - _15 = &raw const _14; // scope 11 at $DIR/reference_prop.rs:+21:17: +21:29 - StorageLive(_16); // scope 12 at $DIR/reference_prop.rs:+22:13: +22:14 - _16 = &_15; // scope 12 at $DIR/reference_prop.rs:+22:17: +22:19 - StorageLive(_17); // scope 13 at $DIR/reference_prop.rs:+23:13: +23:14 - _17 = (*_15); // scope 13 at $DIR/reference_prop.rs:+23:17: +23:19 -- _13 = const (); // scope 10 at $DIR/reference_prop.rs:+19:5: +24:6 - StorageDead(_17); // scope 13 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_16); // scope 12 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_15); // scope 11 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_14); // scope 10 at $DIR/reference_prop.rs:+24:5: +24:6 -- StorageDead(_13); // scope 0 at $DIR/reference_prop.rs:+24:5: +24:6 -- StorageLive(_18); // scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - StorageLive(_19); // scope 15 at $DIR/reference_prop.rs:+28:13: +28:14 - _19 = const 5_usize; // scope 15 at $DIR/reference_prop.rs:+28:17: +28:24 - StorageLive(_20); // scope 16 at $DIR/reference_prop.rs:+29:13: +29:18 - _20 = &raw const _19; // scope 16 at $DIR/reference_prop.rs:+29:21: +29:33 - StorageLive(_21); // scope 17 at $DIR/reference_prop.rs:+30:13: +30:14 - _21 = &mut _20; // scope 17 at $DIR/reference_prop.rs:+30:17: +30:23 - StorageLive(_22); // scope 18 at $DIR/reference_prop.rs:+31:13: +31:14 - _22 = (*_20); // scope 18 at $DIR/reference_prop.rs:+31:17: +31:19 -- _18 = const (); // scope 15 at $DIR/reference_prop.rs:+27:5: +32:6 - StorageDead(_22); // scope 18 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_21); // scope 17 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_20); // scope 16 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_19); // scope 15 at $DIR/reference_prop.rs:+32:5: +32:6 -- StorageDead(_18); // scope 0 at $DIR/reference_prop.rs:+32:5: +32:6 -- StorageLive(_23); // scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - StorageLive(_24); // scope 20 at $DIR/reference_prop.rs:+36:13: +36:14 - _24 = const 7_usize; // scope 20 at $DIR/reference_prop.rs:+36:17: +36:24 - StorageLive(_25); // scope 21 at $DIR/reference_prop.rs:+37:13: +37:14 - _25 = &raw const _24; // scope 21 at $DIR/reference_prop.rs:+37:17: +37:29 - StorageLive(_26); // scope 22 at $DIR/reference_prop.rs:+38:13: +38:14 -- _26 = (*_25); // scope 22 at $DIR/reference_prop.rs:+38:17: +38:19 -+ _26 = _24; // scope 22 at $DIR/reference_prop.rs:+38:17: +38:19 - StorageLive(_27); // scope 23 at $DIR/reference_prop.rs:+39:9: +39:18 - StorageLive(_28); // scope 23 at $DIR/reference_prop.rs:+39:16: +39:17 - _28 = _25; // scope 23 at $DIR/reference_prop.rs:+39:16: +39:17 - _27 = opaque::<*const usize>(move _28) -> bb1; // scope 23 at $DIR/reference_prop.rs:+39:9: +39:18 + StorageLive(_7); // scope 4 at $DIR/reference_prop.rs:+6:9: +6:19 + StorageLive(_8); // scope 4 at $DIR/reference_prop.rs:+6:16: +6:18 + _8 = (); // scope 4 at $DIR/reference_prop.rs:+6:16: +6:18 + _7 = opaque::<()>(move _8) -> bb1; // scope 4 at $DIR/reference_prop.rs:+6:9: +6:19 // mir::Constant - // + span: $DIR/reference_prop.rs:186:9: 186:15 - // + literal: Const { ty: fn(*const usize) {opaque::<*const usize>}, val: Value(<ZST>) } + // + span: $DIR/reference_prop.rs:165:9: 165:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } } bb1: { - StorageDead(_28); // scope 23 at $DIR/reference_prop.rs:+39:17: +39:18 - StorageDead(_27); // scope 23 at $DIR/reference_prop.rs:+39:18: +39:19 -- _23 = const (); // scope 20 at $DIR/reference_prop.rs:+35:5: +40:6 - StorageDead(_26); // scope 22 at $DIR/reference_prop.rs:+40:5: +40:6 - StorageDead(_25); // scope 21 at $DIR/reference_prop.rs:+40:5: +40:6 - StorageDead(_24); // scope 20 at $DIR/reference_prop.rs:+40:5: +40:6 -- StorageDead(_23); // scope 0 at $DIR/reference_prop.rs:+40:5: +40:6 -- StorageLive(_29); // scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - StorageLive(_30); // scope 24 at $DIR/reference_prop.rs:+44:13: +44:14 - _30 = const 7_usize; // scope 24 at $DIR/reference_prop.rs:+44:17: +44:24 - StorageLive(_31); // scope 25 at $DIR/reference_prop.rs:+45:13: +45:15 - _31 = &raw const _30; // scope 25 at $DIR/reference_prop.rs:+45:18: +45:30 - StorageLive(_32); // scope 26 at $DIR/reference_prop.rs:+46:13: +46:14 -- _32 = (*_31); // scope 26 at $DIR/reference_prop.rs:+46:17: +46:20 -+ _32 = _30; // scope 26 at $DIR/reference_prop.rs:+46:17: +46:20 - StorageLive(_33); // scope 27 at $DIR/reference_prop.rs:+47:13: +47:15 - _33 = _31; // scope 27 at $DIR/reference_prop.rs:+47:18: +47:20 - StorageLive(_34); // scope 28 at $DIR/reference_prop.rs:+48:13: +48:15 -- _34 = (*_33); // scope 28 at $DIR/reference_prop.rs:+48:18: +48:21 -+ _34 = _30; // scope 28 at $DIR/reference_prop.rs:+48:18: +48:21 - StorageLive(_35); // scope 29 at $DIR/reference_prop.rs:+49:13: +49:15 - _35 = _33; // scope 29 at $DIR/reference_prop.rs:+49:18: +49:20 - StorageLive(_36); // scope 30 at $DIR/reference_prop.rs:+52:9: +52:19 - StorageLive(_37); // scope 30 at $DIR/reference_prop.rs:+52:16: +52:18 - _37 = _35; // scope 30 at $DIR/reference_prop.rs:+52:16: +52:18 - _36 = opaque::<*const usize>(move _37) -> bb2; // scope 30 at $DIR/reference_prop.rs:+52:9: +52:19 + StorageDead(_8); // scope 4 at $DIR/reference_prop.rs:+6:18: +6:19 + StorageDead(_7); // scope 4 at $DIR/reference_prop.rs:+6:19: +6:20 +- _3 = const (); // scope 1 at $DIR/reference_prop.rs:+2:5: +7:6 + StorageDead(_6); // scope 3 at $DIR/reference_prop.rs:+7:5: +7:6 + StorageDead(_5); // scope 2 at $DIR/reference_prop.rs:+7:5: +7:6 + StorageDead(_4); // scope 1 at $DIR/reference_prop.rs:+7:5: +7:6 +- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 +- StorageLive(_9); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + StorageLive(_10); // scope 5 at $DIR/reference_prop.rs:+11:13: +11:14 + _10 = const 5_usize; // scope 5 at $DIR/reference_prop.rs:+11:17: +11:24 + StorageLive(_11); // scope 6 at $DIR/reference_prop.rs:+12:13: +12:15 + _11 = const 7_usize; // scope 6 at $DIR/reference_prop.rs:+12:18: +12:25 + StorageLive(_12); // scope 7 at $DIR/reference_prop.rs:+13:13: +13:18 + _12 = &raw const _10; // scope 7 at $DIR/reference_prop.rs:+13:21: +13:33 + StorageLive(_13); // scope 8 at $DIR/reference_prop.rs:+14:13: +14:26 + _13 = &raw const _11; // scope 8 at $DIR/reference_prop.rs:+14:13: +14:26 + _12 = move _13; // scope 8 at $DIR/reference_prop.rs:+14:9: +14:26 + StorageDead(_13); // scope 8 at $DIR/reference_prop.rs:+14:25: +14:26 + StorageLive(_14); // scope 8 at $DIR/reference_prop.rs:+16:13: +16:14 + _14 = (*_12); // scope 8 at $DIR/reference_prop.rs:+16:17: +16:19 + StorageLive(_15); // scope 9 at $DIR/reference_prop.rs:+17:9: +17:19 + StorageLive(_16); // scope 9 at $DIR/reference_prop.rs:+17:16: +17:18 + _16 = (); // scope 9 at $DIR/reference_prop.rs:+17:16: +17:18 + _15 = opaque::<()>(move _16) -> bb2; // scope 9 at $DIR/reference_prop.rs:+17:9: +17:19 // mir::Constant - // + span: $DIR/reference_prop.rs:199:9: 199:15 - // + literal: Const { ty: fn(*const usize) {opaque::<*const usize>}, val: Value(<ZST>) } + // + span: $DIR/reference_prop.rs:176:9: 176:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } } bb2: { - StorageDead(_37); // scope 30 at $DIR/reference_prop.rs:+52:18: +52:19 - StorageDead(_36); // scope 30 at $DIR/reference_prop.rs:+52:19: +52:20 -- _29 = const (); // scope 24 at $DIR/reference_prop.rs:+43:5: +53:6 - StorageDead(_35); // scope 29 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_34); // scope 28 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_33); // scope 27 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_32); // scope 26 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_31); // scope 25 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_30); // scope 24 at $DIR/reference_prop.rs:+53:5: +53:6 -- StorageDead(_29); // scope 0 at $DIR/reference_prop.rs:+53:5: +53:6 -- StorageLive(_38); // scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 - StorageLive(_39); // scope 31 at $DIR/reference_prop.rs:+57:13: +57:14 - _39 = &raw const (*_1); // scope 31 at $DIR/reference_prop.rs:+57:17: +57:35 - StorageLive(_40); // scope 32 at $DIR/reference_prop.rs:+58:13: +58:14 -- _40 = (*_39); // scope 32 at $DIR/reference_prop.rs:+58:17: +58:19 -- _38 = const (); // scope 31 at $DIR/reference_prop.rs:+56:5: +59:6 -+ _40 = (*_1); // scope 32 at $DIR/reference_prop.rs:+58:17: +58:19 - StorageDead(_40); // scope 32 at $DIR/reference_prop.rs:+59:5: +59:6 - StorageDead(_39); // scope 31 at $DIR/reference_prop.rs:+59:5: +59:6 -- StorageDead(_38); // scope 0 at $DIR/reference_prop.rs:+59:5: +59:6 -- StorageLive(_41); // scope 0 at $DIR/reference_prop.rs:+62:5: +66:6 - StorageLive(_42); // scope 34 at $DIR/reference_prop.rs:+63:13: +63:14 - _42 = &raw const (*_2); // scope 34 at $DIR/reference_prop.rs:+63:17: +63:37 - StorageLive(_43); // scope 35 at $DIR/reference_prop.rs:+64:20: +64:38 - _43 = &raw const (*_1); // scope 35 at $DIR/reference_prop.rs:+64:20: +64:38 - _2 = move _43; // scope 35 at $DIR/reference_prop.rs:+64:9: +64:38 - StorageDead(_43); // scope 35 at $DIR/reference_prop.rs:+64:37: +64:38 - StorageLive(_44); // scope 35 at $DIR/reference_prop.rs:+65:13: +65:14 - _44 = (*_42); // scope 35 at $DIR/reference_prop.rs:+65:17: +65:19 -- _41 = const (); // scope 34 at $DIR/reference_prop.rs:+62:5: +66:6 - StorageDead(_44); // scope 35 at $DIR/reference_prop.rs:+66:5: +66:6 - StorageDead(_42); // scope 34 at $DIR/reference_prop.rs:+66:5: +66:6 -- StorageDead(_41); // scope 0 at $DIR/reference_prop.rs:+66:5: +66:6 - StorageLive(_45); // scope 37 at $DIR/reference_prop.rs:+70:13: +70:14 - _45 = const 13_usize; // scope 37 at $DIR/reference_prop.rs:+70:17: +70:25 - StorageLive(_46); // scope 38 at $DIR/reference_prop.rs:+71:13: +71:14 - _46 = &raw const _45; // scope 38 at $DIR/reference_prop.rs:+71:17: +71:29 - StorageLive(_47); // scope 39 at $DIR/reference_prop.rs:+72:13: +72:14 -- _47 = &raw const (*_46); // scope 39 at $DIR/reference_prop.rs:+72:17: +72:30 -+ _47 = &raw const _45; // scope 39 at $DIR/reference_prop.rs:+72:17: +72:30 - StorageLive(_48); // scope 40 at $DIR/reference_prop.rs:+73:13: +73:14 -- _48 = (*_47); // scope 40 at $DIR/reference_prop.rs:+73:17: +73:19 -+ _48 = _45; // scope 40 at $DIR/reference_prop.rs:+73:17: +73:19 - _0 = const (); // scope 37 at $DIR/reference_prop.rs:+69:5: +74:6 - StorageDead(_48); // scope 40 at $DIR/reference_prop.rs:+74:5: +74:6 - StorageDead(_47); // scope 39 at $DIR/reference_prop.rs:+74:5: +74:6 - StorageDead(_46); // scope 38 at $DIR/reference_prop.rs:+74:5: +74:6 - StorageDead(_45); // scope 37 at $DIR/reference_prop.rs:+74:5: +74:6 - return; // scope 0 at $DIR/reference_prop.rs:+75:2: +75:2 + StorageDead(_16); // scope 9 at $DIR/reference_prop.rs:+17:18: +17:19 + StorageDead(_15); // scope 9 at $DIR/reference_prop.rs:+17:19: +17:20 +- _9 = const (); // scope 5 at $DIR/reference_prop.rs:+10:5: +18:6 + StorageDead(_14); // scope 8 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_12); // scope 7 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_11); // scope 6 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_10); // scope 5 at $DIR/reference_prop.rs:+18:5: +18:6 +- StorageDead(_9); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 +- StorageLive(_17); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + StorageLive(_18); // scope 10 at $DIR/reference_prop.rs:+22:13: +22:14 + _18 = const 5_usize; // scope 10 at $DIR/reference_prop.rs:+22:17: +22:24 + StorageLive(_19); // scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 + _19 = &raw const _18; // scope 11 at $DIR/reference_prop.rs:+23:17: +23:29 + StorageLive(_20); // scope 12 at $DIR/reference_prop.rs:+24:13: +24:14 + _20 = &_19; // scope 12 at $DIR/reference_prop.rs:+24:17: +24:19 + StorageLive(_21); // scope 13 at $DIR/reference_prop.rs:+25:13: +25:14 + _21 = (*_19); // scope 13 at $DIR/reference_prop.rs:+25:17: +25:19 + StorageLive(_22); // scope 14 at $DIR/reference_prop.rs:+26:9: +26:19 + StorageLive(_23); // scope 14 at $DIR/reference_prop.rs:+26:16: +26:18 + _23 = (); // scope 14 at $DIR/reference_prop.rs:+26:16: +26:18 + _22 = opaque::<()>(move _23) -> bb3; // scope 14 at $DIR/reference_prop.rs:+26:9: +26:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:185:9: 185:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb3: { + StorageDead(_23); // scope 14 at $DIR/reference_prop.rs:+26:18: +26:19 + StorageDead(_22); // scope 14 at $DIR/reference_prop.rs:+26:19: +26:20 +- _17 = const (); // scope 10 at $DIR/reference_prop.rs:+21:5: +27:6 + StorageDead(_21); // scope 13 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_20); // scope 12 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_19); // scope 11 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_18); // scope 10 at $DIR/reference_prop.rs:+27:5: +27:6 +- StorageDead(_17); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 +- StorageLive(_24); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + StorageLive(_25); // scope 15 at $DIR/reference_prop.rs:+31:13: +31:14 + _25 = const 5_usize; // scope 15 at $DIR/reference_prop.rs:+31:17: +31:24 + StorageLive(_26); // scope 16 at $DIR/reference_prop.rs:+32:13: +32:18 + _26 = &raw const _25; // scope 16 at $DIR/reference_prop.rs:+32:21: +32:33 + StorageLive(_27); // scope 17 at $DIR/reference_prop.rs:+33:13: +33:14 + _27 = &mut _26; // scope 17 at $DIR/reference_prop.rs:+33:17: +33:23 + StorageLive(_28); // scope 18 at $DIR/reference_prop.rs:+34:13: +34:14 + _28 = (*_26); // scope 18 at $DIR/reference_prop.rs:+34:17: +34:19 + StorageLive(_29); // scope 19 at $DIR/reference_prop.rs:+35:9: +35:19 + StorageLive(_30); // scope 19 at $DIR/reference_prop.rs:+35:16: +35:18 + _30 = (); // scope 19 at $DIR/reference_prop.rs:+35:16: +35:18 + _29 = opaque::<()>(move _30) -> bb4; // scope 19 at $DIR/reference_prop.rs:+35:9: +35:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:194:9: 194:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb4: { + StorageDead(_30); // scope 19 at $DIR/reference_prop.rs:+35:18: +35:19 + StorageDead(_29); // scope 19 at $DIR/reference_prop.rs:+35:19: +35:20 +- _24 = const (); // scope 15 at $DIR/reference_prop.rs:+30:5: +36:6 + StorageDead(_28); // scope 18 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_27); // scope 17 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_26); // scope 16 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_25); // scope 15 at $DIR/reference_prop.rs:+36:5: +36:6 +- StorageDead(_24); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 +- StorageLive(_31); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + StorageLive(_32); // scope 20 at $DIR/reference_prop.rs:+40:13: +40:14 + _32 = const 7_usize; // scope 20 at $DIR/reference_prop.rs:+40:17: +40:24 + StorageLive(_33); // scope 21 at $DIR/reference_prop.rs:+41:13: +41:14 + _33 = &raw const _32; // scope 21 at $DIR/reference_prop.rs:+41:17: +41:29 + StorageLive(_34); // scope 22 at $DIR/reference_prop.rs:+42:13: +42:14 +- _34 = (*_33); // scope 22 at $DIR/reference_prop.rs:+42:17: +42:19 ++ _34 = _32; // scope 22 at $DIR/reference_prop.rs:+42:17: +42:19 + StorageLive(_35); // scope 23 at $DIR/reference_prop.rs:+43:9: +43:18 + StorageLive(_36); // scope 23 at $DIR/reference_prop.rs:+43:16: +43:17 + _36 = _33; // scope 23 at $DIR/reference_prop.rs:+43:16: +43:17 + _35 = opaque::<*const usize>(move _36) -> bb5; // scope 23 at $DIR/reference_prop.rs:+43:9: +43:18 + // mir::Constant + // + span: $DIR/reference_prop.rs:202:9: 202:15 + // + literal: Const { ty: fn(*const usize) {opaque::<*const usize>}, val: Value(<ZST>) } + } + + bb5: { + StorageDead(_36); // scope 23 at $DIR/reference_prop.rs:+43:17: +43:18 + StorageDead(_35); // scope 23 at $DIR/reference_prop.rs:+43:18: +43:19 +- _31 = const (); // scope 20 at $DIR/reference_prop.rs:+39:5: +44:6 + StorageDead(_34); // scope 22 at $DIR/reference_prop.rs:+44:5: +44:6 + StorageDead(_33); // scope 21 at $DIR/reference_prop.rs:+44:5: +44:6 + StorageDead(_32); // scope 20 at $DIR/reference_prop.rs:+44:5: +44:6 +- StorageDead(_31); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 +- StorageLive(_37); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + StorageLive(_38); // scope 24 at $DIR/reference_prop.rs:+48:13: +48:14 + _38 = const 7_usize; // scope 24 at $DIR/reference_prop.rs:+48:17: +48:24 + StorageLive(_39); // scope 25 at $DIR/reference_prop.rs:+49:13: +49:15 + _39 = &raw const _38; // scope 25 at $DIR/reference_prop.rs:+49:18: +49:30 + StorageLive(_40); // scope 26 at $DIR/reference_prop.rs:+50:13: +50:14 +- _40 = (*_39); // scope 26 at $DIR/reference_prop.rs:+50:17: +50:20 ++ _40 = _38; // scope 26 at $DIR/reference_prop.rs:+50:17: +50:20 + StorageLive(_41); // scope 27 at $DIR/reference_prop.rs:+51:13: +51:15 + _41 = _39; // scope 27 at $DIR/reference_prop.rs:+51:18: +51:20 + StorageLive(_42); // scope 28 at $DIR/reference_prop.rs:+52:13: +52:15 +- _42 = (*_41); // scope 28 at $DIR/reference_prop.rs:+52:18: +52:21 ++ _42 = _38; // scope 28 at $DIR/reference_prop.rs:+52:18: +52:21 + StorageLive(_43); // scope 29 at $DIR/reference_prop.rs:+53:13: +53:15 + _43 = _41; // scope 29 at $DIR/reference_prop.rs:+53:18: +53:20 + StorageLive(_44); // scope 30 at $DIR/reference_prop.rs:+56:9: +56:19 + StorageLive(_45); // scope 30 at $DIR/reference_prop.rs:+56:16: +56:18 + _45 = _43; // scope 30 at $DIR/reference_prop.rs:+56:16: +56:18 + _44 = opaque::<*const usize>(move _45) -> bb6; // scope 30 at $DIR/reference_prop.rs:+56:9: +56:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:215:9: 215:15 + // + literal: Const { ty: fn(*const usize) {opaque::<*const usize>}, val: Value(<ZST>) } + } + + bb6: { + StorageDead(_45); // scope 30 at $DIR/reference_prop.rs:+56:18: +56:19 + StorageDead(_44); // scope 30 at $DIR/reference_prop.rs:+56:19: +56:20 +- _37 = const (); // scope 24 at $DIR/reference_prop.rs:+47:5: +57:6 + StorageDead(_43); // scope 29 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_42); // scope 28 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_41); // scope 27 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_40); // scope 26 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_39); // scope 25 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_38); // scope 24 at $DIR/reference_prop.rs:+57:5: +57:6 +- StorageDead(_37); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 +- StorageLive(_46); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + StorageLive(_47); // scope 31 at $DIR/reference_prop.rs:+61:13: +61:14 + _47 = &raw const (*_1); // scope 31 at $DIR/reference_prop.rs:+61:17: +61:35 + StorageLive(_48); // scope 32 at $DIR/reference_prop.rs:+62:13: +62:14 +- _48 = (*_47); // scope 32 at $DIR/reference_prop.rs:+62:17: +62:19 ++ _48 = (*_1); // scope 32 at $DIR/reference_prop.rs:+62:17: +62:19 + StorageLive(_49); // scope 33 at $DIR/reference_prop.rs:+63:9: +63:19 + StorageLive(_50); // scope 33 at $DIR/reference_prop.rs:+63:16: +63:18 + _50 = (); // scope 33 at $DIR/reference_prop.rs:+63:16: +63:18 + _49 = opaque::<()>(move _50) -> bb7; // scope 33 at $DIR/reference_prop.rs:+63:9: +63:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:222:9: 222:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb7: { + StorageDead(_50); // scope 33 at $DIR/reference_prop.rs:+63:18: +63:19 + StorageDead(_49); // scope 33 at $DIR/reference_prop.rs:+63:19: +63:20 +- _46 = const (); // scope 31 at $DIR/reference_prop.rs:+60:5: +64:6 + StorageDead(_48); // scope 32 at $DIR/reference_prop.rs:+64:5: +64:6 + StorageDead(_47); // scope 31 at $DIR/reference_prop.rs:+64:5: +64:6 +- StorageDead(_46); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 +- StorageLive(_51); // scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 + StorageLive(_52); // scope 34 at $DIR/reference_prop.rs:+68:13: +68:14 + _52 = &raw const (*_2); // scope 34 at $DIR/reference_prop.rs:+68:17: +68:37 + StorageLive(_53); // scope 35 at $DIR/reference_prop.rs:+69:20: +69:38 + _53 = &raw const (*_1); // scope 35 at $DIR/reference_prop.rs:+69:20: +69:38 + _2 = move _53; // scope 35 at $DIR/reference_prop.rs:+69:9: +69:38 + StorageDead(_53); // scope 35 at $DIR/reference_prop.rs:+69:37: +69:38 + StorageLive(_54); // scope 35 at $DIR/reference_prop.rs:+70:13: +70:14 + _54 = (*_52); // scope 35 at $DIR/reference_prop.rs:+70:17: +70:19 + StorageLive(_55); // scope 36 at $DIR/reference_prop.rs:+71:9: +71:19 + StorageLive(_56); // scope 36 at $DIR/reference_prop.rs:+71:16: +71:18 + _56 = (); // scope 36 at $DIR/reference_prop.rs:+71:16: +71:18 + _55 = opaque::<()>(move _56) -> bb8; // scope 36 at $DIR/reference_prop.rs:+71:9: +71:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:230:9: 230:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb8: { + StorageDead(_56); // scope 36 at $DIR/reference_prop.rs:+71:18: +71:19 + StorageDead(_55); // scope 36 at $DIR/reference_prop.rs:+71:19: +71:20 +- _51 = const (); // scope 34 at $DIR/reference_prop.rs:+67:5: +72:6 + StorageDead(_54); // scope 35 at $DIR/reference_prop.rs:+72:5: +72:6 + StorageDead(_52); // scope 34 at $DIR/reference_prop.rs:+72:5: +72:6 +- StorageDead(_51); // scope 0 at $DIR/reference_prop.rs:+72:5: +72:6 + StorageLive(_57); // scope 37 at $DIR/reference_prop.rs:+76:13: +76:14 + _57 = const 13_usize; // scope 37 at $DIR/reference_prop.rs:+76:17: +76:25 + StorageLive(_58); // scope 38 at $DIR/reference_prop.rs:+77:13: +77:14 + _58 = &raw const _57; // scope 38 at $DIR/reference_prop.rs:+77:17: +77:29 + StorageLive(_59); // scope 39 at $DIR/reference_prop.rs:+78:13: +78:14 +- _59 = &raw const (*_58); // scope 39 at $DIR/reference_prop.rs:+78:17: +78:30 ++ _59 = &raw const _57; // scope 39 at $DIR/reference_prop.rs:+78:17: +78:30 + StorageLive(_60); // scope 40 at $DIR/reference_prop.rs:+79:13: +79:14 +- _60 = (*_59); // scope 40 at $DIR/reference_prop.rs:+79:17: +79:19 ++ _60 = _57; // scope 40 at $DIR/reference_prop.rs:+79:17: +79:19 + StorageLive(_61); // scope 41 at $DIR/reference_prop.rs:+80:9: +80:19 + StorageLive(_62); // scope 41 at $DIR/reference_prop.rs:+80:16: +80:18 + _62 = (); // scope 41 at $DIR/reference_prop.rs:+80:16: +80:18 + _61 = opaque::<()>(move _62) -> bb9; // scope 41 at $DIR/reference_prop.rs:+80:9: +80:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:239:9: 239:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb9: { + StorageDead(_62); // scope 41 at $DIR/reference_prop.rs:+80:18: +80:19 + StorageDead(_61); // scope 41 at $DIR/reference_prop.rs:+80:19: +80:20 + _0 = const (); // scope 37 at $DIR/reference_prop.rs:+75:5: +81:6 + StorageDead(_60); // scope 40 at $DIR/reference_prop.rs:+81:5: +81:6 + StorageDead(_59); // scope 39 at $DIR/reference_prop.rs:+81:5: +81:6 + StorageDead(_58); // scope 38 at $DIR/reference_prop.rs:+81:5: +81:6 + StorageDead(_57); // scope 37 at $DIR/reference_prop.rs:+81:5: +81:6 + return; // scope 0 at $DIR/reference_prop.rs:+82:2: +82:2 } } diff --git a/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff index f7bbd2a03f9..9ad9dd86d1c 100644 --- a/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff @@ -5,29 +5,41 @@ debug single => _1; // in scope 0 at $DIR/reference_prop.rs:+0:43: +0:49 debug multiple => _2; // in scope 0 at $DIR/reference_prop.rs:+0:62: +0:74 let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:87: +0:87 - let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 + let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 let mut _4: usize; // in scope 0 at $DIR/reference_prop.rs:+3:13: +3:18 - let _7: (); // in scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - let mut _8: usize; // in scope 0 at $DIR/reference_prop.rs:+10:13: +10:18 - let mut _11: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+13:13: +13:20 - let mut _12: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+13:13: +13:20 - let _14: (); // in scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - let mut _15: usize; // in scope 0 at $DIR/reference_prop.rs:+20:13: +20:18 - let _19: (); // in scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - let mut _20: usize; // in scope 0 at $DIR/reference_prop.rs:+28:13: +28:18 - let _24: (); // in scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - let mut _25: usize; // in scope 0 at $DIR/reference_prop.rs:+36:13: +36:18 - let _28: (); // in scope 0 at $DIR/reference_prop.rs:+39:9: +39:18 - let mut _29: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+39:16: +39:17 - let _30: (); // in scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - let mut _31: usize; // in scope 0 at $DIR/reference_prop.rs:+44:13: +44:18 - let _37: (); // in scope 0 at $DIR/reference_prop.rs:+52:9: +52:19 - let mut _38: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+52:16: +52:18 - let _39: (); // in scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 - let _40: &mut T; // in scope 0 at $DIR/reference_prop.rs:+57:13: +57:14 - let _42: &mut T; // in scope 0 at $DIR/reference_prop.rs:+63:13: +63:14 - let mut _43: &mut T; // in scope 0 at $DIR/reference_prop.rs:+64:20: +64:32 - let mut _44: &mut T; // in scope 0 at $DIR/reference_prop.rs:+64:20: +64:32 + let _7: (); // in scope 0 at $DIR/reference_prop.rs:+6:9: +6:19 + let mut _8: (); // in scope 0 at $DIR/reference_prop.rs:+6:16: +6:18 + let _9: (); // in scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + let mut _10: usize; // in scope 0 at $DIR/reference_prop.rs:+11:13: +11:18 + let mut _13: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:20 + let mut _14: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:20 + let _16: (); // in scope 0 at $DIR/reference_prop.rs:+17:9: +17:19 + let mut _17: (); // in scope 0 at $DIR/reference_prop.rs:+17:16: +17:18 + let _18: (); // in scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + let mut _19: usize; // in scope 0 at $DIR/reference_prop.rs:+22:13: +22:18 + let _23: (); // in scope 0 at $DIR/reference_prop.rs:+26:9: +26:19 + let mut _24: (); // in scope 0 at $DIR/reference_prop.rs:+26:16: +26:18 + let _25: (); // in scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + let mut _26: usize; // in scope 0 at $DIR/reference_prop.rs:+31:13: +31:18 + let _30: (); // in scope 0 at $DIR/reference_prop.rs:+35:9: +35:19 + let mut _31: (); // in scope 0 at $DIR/reference_prop.rs:+35:16: +35:18 + let _32: (); // in scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + let mut _33: usize; // in scope 0 at $DIR/reference_prop.rs:+40:13: +40:18 + let _36: (); // in scope 0 at $DIR/reference_prop.rs:+43:9: +43:18 + let mut _37: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+43:16: +43:17 + let _38: (); // in scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + let mut _39: usize; // in scope 0 at $DIR/reference_prop.rs:+48:13: +48:18 + let _45: (); // in scope 0 at $DIR/reference_prop.rs:+56:9: +56:19 + let mut _46: &mut usize; // in scope 0 at $DIR/reference_prop.rs:+56:16: +56:18 + let _47: (); // in scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + let _48: &mut T; // in scope 0 at $DIR/reference_prop.rs:+61:13: +61:14 + let _50: (); // in scope 0 at $DIR/reference_prop.rs:+63:9: +63:19 + let mut _51: (); // in scope 0 at $DIR/reference_prop.rs:+63:16: +63:18 + let _52: &mut T; // in scope 0 at $DIR/reference_prop.rs:+68:13: +68:14 + let mut _53: &mut T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:32 + let mut _54: &mut T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:32 + let _56: (); // in scope 0 at $DIR/reference_prop.rs:+71:9: +71:19 + let mut _57: (); // in scope 0 at $DIR/reference_prop.rs:+71:16: +71:18 scope 1 { debug a => _4; // in scope 1 at $DIR/reference_prop.rs:+3:13: +3:18 let _5: &mut usize; // in scope 1 at $DIR/reference_prop.rs:+4:13: +4:14 @@ -40,78 +52,78 @@ } } scope 4 { - debug a => _8; // in scope 4 at $DIR/reference_prop.rs:+10:13: +10:18 - let mut _9: usize; // in scope 4 at $DIR/reference_prop.rs:+11:13: +11:19 + debug a => _10; // in scope 4 at $DIR/reference_prop.rs:+11:13: +11:18 + let mut _11: usize; // in scope 4 at $DIR/reference_prop.rs:+12:13: +12:19 scope 5 { - debug a2 => _9; // in scope 5 at $DIR/reference_prop.rs:+11:13: +11:19 - let mut _10: &mut usize; // in scope 5 at $DIR/reference_prop.rs:+12:13: +12:18 + debug a2 => _11; // in scope 5 at $DIR/reference_prop.rs:+12:13: +12:19 + let mut _12: &mut usize; // in scope 5 at $DIR/reference_prop.rs:+13:13: +13:18 scope 6 { - debug b => _10; // in scope 6 at $DIR/reference_prop.rs:+12:13: +12:18 - let _13: usize; // in scope 6 at $DIR/reference_prop.rs:+15:13: +15:14 + debug b => _12; // in scope 6 at $DIR/reference_prop.rs:+13:13: +13:18 + let _15: usize; // in scope 6 at $DIR/reference_prop.rs:+16:13: +16:14 scope 7 { - debug c => _13; // in scope 7 at $DIR/reference_prop.rs:+15:13: +15:14 + debug c => _15; // in scope 7 at $DIR/reference_prop.rs:+16:13: +16:14 } } } } scope 8 { - debug a => _15; // in scope 8 at $DIR/reference_prop.rs:+20:13: +20:18 - let _16: &mut usize; // in scope 8 at $DIR/reference_prop.rs:+21:13: +21:14 + debug a => _19; // in scope 8 at $DIR/reference_prop.rs:+22:13: +22:18 + let _20: &mut usize; // in scope 8 at $DIR/reference_prop.rs:+23:13: +23:14 scope 9 { - debug b => _16; // in scope 9 at $DIR/reference_prop.rs:+21:13: +21:14 - let _17: &&mut usize; // in scope 9 at $DIR/reference_prop.rs:+22:13: +22:14 + debug b => _20; // in scope 9 at $DIR/reference_prop.rs:+23:13: +23:14 + let _21: &&mut usize; // in scope 9 at $DIR/reference_prop.rs:+24:13: +24:14 scope 10 { - debug d => _17; // in scope 10 at $DIR/reference_prop.rs:+22:13: +22:14 - let _18: usize; // in scope 10 at $DIR/reference_prop.rs:+23:13: +23:14 + debug d => _21; // in scope 10 at $DIR/reference_prop.rs:+24:13: +24:14 + let _22: usize; // in scope 10 at $DIR/reference_prop.rs:+25:13: +25:14 scope 11 { - debug c => _18; // in scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 + debug c => _22; // in scope 11 at $DIR/reference_prop.rs:+25:13: +25:14 } } } } scope 12 { - debug a => _20; // in scope 12 at $DIR/reference_prop.rs:+28:13: +28:18 - let mut _21: &mut usize; // in scope 12 at $DIR/reference_prop.rs:+29:13: +29:18 + debug a => _26; // in scope 12 at $DIR/reference_prop.rs:+31:13: +31:18 + let mut _27: &mut usize; // in scope 12 at $DIR/reference_prop.rs:+32:13: +32:18 scope 13 { - debug b => _21; // in scope 13 at $DIR/reference_prop.rs:+29:13: +29:18 - let _22: &mut &mut usize; // in scope 13 at $DIR/reference_prop.rs:+30:13: +30:14 + debug b => _27; // in scope 13 at $DIR/reference_prop.rs:+32:13: +32:18 + let _28: &mut &mut usize; // in scope 13 at $DIR/reference_prop.rs:+33:13: +33:14 scope 14 { - debug d => _22; // in scope 14 at $DIR/reference_prop.rs:+30:13: +30:14 - let _23: usize; // in scope 14 at $DIR/reference_prop.rs:+31:13: +31:14 + debug d => _28; // in scope 14 at $DIR/reference_prop.rs:+33:13: +33:14 + let _29: usize; // in scope 14 at $DIR/reference_prop.rs:+34:13: +34:14 scope 15 { - debug c => _23; // in scope 15 at $DIR/reference_prop.rs:+31:13: +31:14 + debug c => _29; // in scope 15 at $DIR/reference_prop.rs:+34:13: +34:14 } } } } scope 16 { - debug a => _25; // in scope 16 at $DIR/reference_prop.rs:+36:13: +36:18 - let _26: &mut usize; // in scope 16 at $DIR/reference_prop.rs:+37:13: +37:14 + debug a => _33; // in scope 16 at $DIR/reference_prop.rs:+40:13: +40:18 + let _34: &mut usize; // in scope 16 at $DIR/reference_prop.rs:+41:13: +41:14 scope 17 { - debug b => _26; // in scope 17 at $DIR/reference_prop.rs:+37:13: +37:14 - let _27: usize; // in scope 17 at $DIR/reference_prop.rs:+38:13: +38:14 + debug b => _34; // in scope 17 at $DIR/reference_prop.rs:+41:13: +41:14 + let _35: usize; // in scope 17 at $DIR/reference_prop.rs:+42:13: +42:14 scope 18 { - debug c => _27; // in scope 18 at $DIR/reference_prop.rs:+38:13: +38:14 + debug c => _35; // in scope 18 at $DIR/reference_prop.rs:+42:13: +42:14 } } } scope 19 { - debug a => _31; // in scope 19 at $DIR/reference_prop.rs:+44:13: +44:18 - let _32: &mut usize; // in scope 19 at $DIR/reference_prop.rs:+45:13: +45:15 + debug a => _39; // in scope 19 at $DIR/reference_prop.rs:+48:13: +48:18 + let _40: &mut usize; // in scope 19 at $DIR/reference_prop.rs:+49:13: +49:15 scope 20 { - debug b1 => _32; // in scope 20 at $DIR/reference_prop.rs:+45:13: +45:15 - let _33: usize; // in scope 20 at $DIR/reference_prop.rs:+46:13: +46:14 + debug b1 => _40; // in scope 20 at $DIR/reference_prop.rs:+49:13: +49:15 + let _41: usize; // in scope 20 at $DIR/reference_prop.rs:+50:13: +50:14 scope 21 { - debug c => _33; // in scope 21 at $DIR/reference_prop.rs:+46:13: +46:14 - let _34: &mut usize; // in scope 21 at $DIR/reference_prop.rs:+47:13: +47:15 + debug c => _41; // in scope 21 at $DIR/reference_prop.rs:+50:13: +50:14 + let _42: &mut usize; // in scope 21 at $DIR/reference_prop.rs:+51:13: +51:15 scope 22 { - debug b2 => _34; // in scope 22 at $DIR/reference_prop.rs:+47:13: +47:15 - let _35: usize; // in scope 22 at $DIR/reference_prop.rs:+48:13: +48:15 + debug b2 => _42; // in scope 22 at $DIR/reference_prop.rs:+51:13: +51:15 + let _43: usize; // in scope 22 at $DIR/reference_prop.rs:+52:13: +52:15 scope 23 { - debug c2 => _35; // in scope 23 at $DIR/reference_prop.rs:+48:13: +48:15 - let _36: &mut usize; // in scope 23 at $DIR/reference_prop.rs:+49:13: +49:15 + debug c2 => _43; // in scope 23 at $DIR/reference_prop.rs:+52:13: +52:15 + let _44: &mut usize; // in scope 23 at $DIR/reference_prop.rs:+53:13: +53:15 scope 24 { - debug b3 => _36; // in scope 24 at $DIR/reference_prop.rs:+49:13: +49:15 + debug b3 => _44; // in scope 24 at $DIR/reference_prop.rs:+53:13: +53:15 } } } @@ -119,170 +131,242 @@ } } scope 25 { - debug a => _40; // in scope 25 at $DIR/reference_prop.rs:+57:13: +57:14 - let _41: T; // in scope 25 at $DIR/reference_prop.rs:+58:13: +58:14 + debug a => _48; // in scope 25 at $DIR/reference_prop.rs:+61:13: +61:14 + let _49: T; // in scope 25 at $DIR/reference_prop.rs:+62:13: +62:14 scope 26 { - debug b => _41; // in scope 26 at $DIR/reference_prop.rs:+58:13: +58:14 + debug b => _49; // in scope 26 at $DIR/reference_prop.rs:+62:13: +62:14 } } scope 27 { - debug a => _42; // in scope 27 at $DIR/reference_prop.rs:+63:13: +63:14 - let _45: T; // in scope 27 at $DIR/reference_prop.rs:+65:13: +65:14 + debug a => _52; // in scope 27 at $DIR/reference_prop.rs:+68:13: +68:14 + let _55: T; // in scope 27 at $DIR/reference_prop.rs:+70:13: +70:14 scope 28 { - debug b => _45; // in scope 28 at $DIR/reference_prop.rs:+65:13: +65:14 + debug b => _55; // in scope 28 at $DIR/reference_prop.rs:+70:13: +70:14 } } bb0: { -- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 +- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 StorageLive(_4); // scope 0 at $DIR/reference_prop.rs:+3:13: +3:18 _4 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+3:21: +3:28 StorageLive(_5); // scope 1 at $DIR/reference_prop.rs:+4:13: +4:14 _5 = &mut _4; // scope 1 at $DIR/reference_prop.rs:+4:17: +4:23 StorageLive(_6); // scope 2 at $DIR/reference_prop.rs:+5:13: +5:14 - _6 = (*_5); // scope 2 at $DIR/reference_prop.rs:+5:17: +5:19 -- _3 = const (); // scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 + _6 = _4; // scope 2 at $DIR/reference_prop.rs:+5:17: +5:19 - StorageDead(_6); // scope 2 at $DIR/reference_prop.rs:+6:5: +6:6 - StorageDead(_5); // scope 1 at $DIR/reference_prop.rs:+6:5: +6:6 - StorageDead(_4); // scope 0 at $DIR/reference_prop.rs:+6:5: +6:6 -- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+6:5: +6:6 -- StorageLive(_7); // scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - StorageLive(_8); // scope 0 at $DIR/reference_prop.rs:+10:13: +10:18 - _8 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+10:21: +10:28 - StorageLive(_9); // scope 4 at $DIR/reference_prop.rs:+11:13: +11:19 - _9 = const 7_usize; // scope 4 at $DIR/reference_prop.rs:+11:22: +11:29 - StorageLive(_10); // scope 5 at $DIR/reference_prop.rs:+12:13: +12:18 - _10 = &mut _8; // scope 5 at $DIR/reference_prop.rs:+12:21: +12:27 - StorageLive(_11); // scope 6 at $DIR/reference_prop.rs:+13:13: +13:20 -- StorageLive(_12); // scope 6 at $DIR/reference_prop.rs:+13:13: +13:20 -- _12 = &mut _9; // scope 6 at $DIR/reference_prop.rs:+13:13: +13:20 -- _11 = &mut (*_12); // scope 6 at $DIR/reference_prop.rs:+13:13: +13:20 -+ _11 = &mut _9; // scope 6 at $DIR/reference_prop.rs:+13:13: +13:20 - _10 = move _11; // scope 6 at $DIR/reference_prop.rs:+13:9: +13:20 - StorageDead(_11); // scope 6 at $DIR/reference_prop.rs:+13:19: +13:20 -- StorageDead(_12); // scope 6 at $DIR/reference_prop.rs:+13:20: +13:21 - StorageLive(_13); // scope 6 at $DIR/reference_prop.rs:+15:13: +15:14 - _13 = (*_10); // scope 6 at $DIR/reference_prop.rs:+15:17: +15:19 -- _7 = const (); // scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - StorageDead(_13); // scope 6 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_10); // scope 5 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_9); // scope 4 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_8); // scope 0 at $DIR/reference_prop.rs:+16:5: +16:6 -- StorageDead(_7); // scope 0 at $DIR/reference_prop.rs:+16:5: +16:6 -- StorageLive(_14); // scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - StorageLive(_15); // scope 0 at $DIR/reference_prop.rs:+20:13: +20:18 - _15 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+20:21: +20:28 - StorageLive(_16); // scope 8 at $DIR/reference_prop.rs:+21:13: +21:14 - _16 = &mut _15; // scope 8 at $DIR/reference_prop.rs:+21:17: +21:23 - StorageLive(_17); // scope 9 at $DIR/reference_prop.rs:+22:13: +22:14 - _17 = &_16; // scope 9 at $DIR/reference_prop.rs:+22:17: +22:19 - StorageLive(_18); // scope 10 at $DIR/reference_prop.rs:+23:13: +23:14 - _18 = (*_16); // scope 10 at $DIR/reference_prop.rs:+23:17: +23:19 -- _14 = const (); // scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - StorageDead(_18); // scope 10 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_17); // scope 9 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_16); // scope 8 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_15); // scope 0 at $DIR/reference_prop.rs:+24:5: +24:6 -- StorageDead(_14); // scope 0 at $DIR/reference_prop.rs:+24:5: +24:6 -- StorageLive(_19); // scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - StorageLive(_20); // scope 0 at $DIR/reference_prop.rs:+28:13: +28:18 - _20 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+28:21: +28:28 - StorageLive(_21); // scope 12 at $DIR/reference_prop.rs:+29:13: +29:18 - _21 = &mut _20; // scope 12 at $DIR/reference_prop.rs:+29:21: +29:27 - StorageLive(_22); // scope 13 at $DIR/reference_prop.rs:+30:13: +30:14 - _22 = &mut _21; // scope 13 at $DIR/reference_prop.rs:+30:17: +30:23 - StorageLive(_23); // scope 14 at $DIR/reference_prop.rs:+31:13: +31:14 - _23 = (*_21); // scope 14 at $DIR/reference_prop.rs:+31:17: +31:19 -- _19 = const (); // scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - StorageDead(_23); // scope 14 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_22); // scope 13 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_21); // scope 12 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_20); // scope 0 at $DIR/reference_prop.rs:+32:5: +32:6 -- StorageDead(_19); // scope 0 at $DIR/reference_prop.rs:+32:5: +32:6 -- StorageLive(_24); // scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - StorageLive(_25); // scope 0 at $DIR/reference_prop.rs:+36:13: +36:18 - _25 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+36:21: +36:28 - StorageLive(_26); // scope 16 at $DIR/reference_prop.rs:+37:13: +37:14 - _26 = &mut _25; // scope 16 at $DIR/reference_prop.rs:+37:17: +37:23 - StorageLive(_27); // scope 17 at $DIR/reference_prop.rs:+38:13: +38:14 - _27 = (*_26); // scope 17 at $DIR/reference_prop.rs:+38:17: +38:19 - StorageLive(_28); // scope 18 at $DIR/reference_prop.rs:+39:9: +39:18 - StorageLive(_29); // scope 18 at $DIR/reference_prop.rs:+39:16: +39:17 - _29 = move _26; // scope 18 at $DIR/reference_prop.rs:+39:16: +39:17 - _28 = opaque::<&mut usize>(move _29) -> bb1; // scope 18 at $DIR/reference_prop.rs:+39:9: +39:18 + StorageLive(_7); // scope 3 at $DIR/reference_prop.rs:+6:9: +6:19 + StorageLive(_8); // scope 3 at $DIR/reference_prop.rs:+6:16: +6:18 + _8 = (); // scope 3 at $DIR/reference_prop.rs:+6:16: +6:18 + _7 = opaque::<()>(move _8) -> bb1; // scope 3 at $DIR/reference_prop.rs:+6:9: +6:19 // mir::Constant - // + span: $DIR/reference_prop.rs:117:9: 117:15 - // + literal: Const { ty: fn(&mut usize) {opaque::<&mut usize>}, val: Value(<ZST>) } + // + span: $DIR/reference_prop.rs:90:9: 90:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } } bb1: { - StorageDead(_29); // scope 18 at $DIR/reference_prop.rs:+39:17: +39:18 - StorageDead(_28); // scope 18 at $DIR/reference_prop.rs:+39:18: +39:19 -- _24 = const (); // scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - StorageDead(_27); // scope 17 at $DIR/reference_prop.rs:+40:5: +40:6 - StorageDead(_26); // scope 16 at $DIR/reference_prop.rs:+40:5: +40:6 - StorageDead(_25); // scope 0 at $DIR/reference_prop.rs:+40:5: +40:6 -- StorageDead(_24); // scope 0 at $DIR/reference_prop.rs:+40:5: +40:6 -- StorageLive(_30); // scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - StorageLive(_31); // scope 0 at $DIR/reference_prop.rs:+44:13: +44:18 - _31 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+44:21: +44:28 - StorageLive(_32); // scope 19 at $DIR/reference_prop.rs:+45:13: +45:15 - _32 = &mut _31; // scope 19 at $DIR/reference_prop.rs:+45:18: +45:24 - StorageLive(_33); // scope 20 at $DIR/reference_prop.rs:+46:13: +46:14 - _33 = (*_32); // scope 20 at $DIR/reference_prop.rs:+46:17: +46:20 - StorageLive(_34); // scope 21 at $DIR/reference_prop.rs:+47:13: +47:15 - _34 = move _32; // scope 21 at $DIR/reference_prop.rs:+47:18: +47:20 - StorageLive(_35); // scope 22 at $DIR/reference_prop.rs:+48:13: +48:15 - _35 = (*_34); // scope 22 at $DIR/reference_prop.rs:+48:18: +48:21 - StorageLive(_36); // scope 23 at $DIR/reference_prop.rs:+49:13: +49:15 - _36 = move _34; // scope 23 at $DIR/reference_prop.rs:+49:18: +49:20 - StorageLive(_37); // scope 24 at $DIR/reference_prop.rs:+52:9: +52:19 - StorageLive(_38); // scope 24 at $DIR/reference_prop.rs:+52:16: +52:18 - _38 = move _36; // scope 24 at $DIR/reference_prop.rs:+52:16: +52:18 - _37 = opaque::<&mut usize>(move _38) -> bb2; // scope 24 at $DIR/reference_prop.rs:+52:9: +52:19 + StorageDead(_8); // scope 3 at $DIR/reference_prop.rs:+6:18: +6:19 + StorageDead(_7); // scope 3 at $DIR/reference_prop.rs:+6:19: +6:20 +- _3 = const (); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 + StorageDead(_6); // scope 2 at $DIR/reference_prop.rs:+7:5: +7:6 + StorageDead(_5); // scope 1 at $DIR/reference_prop.rs:+7:5: +7:6 + StorageDead(_4); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 +- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 +- StorageLive(_9); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + StorageLive(_10); // scope 0 at $DIR/reference_prop.rs:+11:13: +11:18 + _10 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+11:21: +11:28 + StorageLive(_11); // scope 4 at $DIR/reference_prop.rs:+12:13: +12:19 + _11 = const 7_usize; // scope 4 at $DIR/reference_prop.rs:+12:22: +12:29 + StorageLive(_12); // scope 5 at $DIR/reference_prop.rs:+13:13: +13:18 + _12 = &mut _10; // scope 5 at $DIR/reference_prop.rs:+13:21: +13:27 + StorageLive(_13); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 +- StorageLive(_14); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 +- _14 = &mut _11; // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 +- _13 = &mut (*_14); // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 ++ _13 = &mut _11; // scope 6 at $DIR/reference_prop.rs:+14:13: +14:20 + _12 = move _13; // scope 6 at $DIR/reference_prop.rs:+14:9: +14:20 + StorageDead(_13); // scope 6 at $DIR/reference_prop.rs:+14:19: +14:20 +- StorageDead(_14); // scope 6 at $DIR/reference_prop.rs:+14:20: +14:21 + StorageLive(_15); // scope 6 at $DIR/reference_prop.rs:+16:13: +16:14 + _15 = (*_12); // scope 6 at $DIR/reference_prop.rs:+16:17: +16:19 + StorageLive(_16); // scope 7 at $DIR/reference_prop.rs:+17:9: +17:19 + StorageLive(_17); // scope 7 at $DIR/reference_prop.rs:+17:16: +17:18 + _17 = (); // scope 7 at $DIR/reference_prop.rs:+17:16: +17:18 + _16 = opaque::<()>(move _17) -> bb2; // scope 7 at $DIR/reference_prop.rs:+17:9: +17:19 // mir::Constant - // + span: $DIR/reference_prop.rs:130:9: 130:15 - // + literal: Const { ty: fn(&mut usize) {opaque::<&mut usize>}, val: Value(<ZST>) } + // + span: $DIR/reference_prop.rs:101:9: 101:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } } bb2: { - StorageDead(_38); // scope 24 at $DIR/reference_prop.rs:+52:18: +52:19 - StorageDead(_37); // scope 24 at $DIR/reference_prop.rs:+52:19: +52:20 -- _30 = const (); // scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - StorageDead(_36); // scope 23 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_35); // scope 22 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_34); // scope 21 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_33); // scope 20 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_32); // scope 19 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_31); // scope 0 at $DIR/reference_prop.rs:+53:5: +53:6 -- StorageDead(_30); // scope 0 at $DIR/reference_prop.rs:+53:5: +53:6 -- StorageLive(_39); // scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 - StorageLive(_40); // scope 0 at $DIR/reference_prop.rs:+57:13: +57:14 - _40 = &mut (*_1); // scope 0 at $DIR/reference_prop.rs:+57:17: +57:29 - StorageLive(_41); // scope 25 at $DIR/reference_prop.rs:+58:13: +58:14 -- _41 = (*_40); // scope 25 at $DIR/reference_prop.rs:+58:17: +58:19 -- _39 = const (); // scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 -+ _41 = (*_1); // scope 25 at $DIR/reference_prop.rs:+58:17: +58:19 - StorageDead(_41); // scope 25 at $DIR/reference_prop.rs:+59:5: +59:6 - StorageDead(_40); // scope 0 at $DIR/reference_prop.rs:+59:5: +59:6 -- StorageDead(_39); // scope 0 at $DIR/reference_prop.rs:+59:5: +59:6 - StorageLive(_42); // scope 0 at $DIR/reference_prop.rs:+63:13: +63:14 - _42 = &mut (*_2); // scope 0 at $DIR/reference_prop.rs:+63:17: +63:31 - StorageLive(_43); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:32 -- StorageLive(_44); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:32 -- _44 = &mut (*_1); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:32 -- _43 = &mut (*_44); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:32 -+ _43 = &mut (*_1); // scope 27 at $DIR/reference_prop.rs:+64:20: +64:32 - _2 = move _43; // scope 27 at $DIR/reference_prop.rs:+64:9: +64:32 - StorageDead(_43); // scope 27 at $DIR/reference_prop.rs:+64:31: +64:32 -- StorageDead(_44); // scope 27 at $DIR/reference_prop.rs:+64:32: +64:33 - StorageLive(_45); // scope 27 at $DIR/reference_prop.rs:+65:13: +65:14 - _45 = (*_42); // scope 27 at $DIR/reference_prop.rs:+65:17: +65:19 - _0 = const (); // scope 0 at $DIR/reference_prop.rs:+62:5: +66:6 - StorageDead(_45); // scope 27 at $DIR/reference_prop.rs:+66:5: +66:6 - StorageDead(_42); // scope 0 at $DIR/reference_prop.rs:+66:5: +66:6 - return; // scope 0 at $DIR/reference_prop.rs:+67:2: +67:2 + StorageDead(_17); // scope 7 at $DIR/reference_prop.rs:+17:18: +17:19 + StorageDead(_16); // scope 7 at $DIR/reference_prop.rs:+17:19: +17:20 +- _9 = const (); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + StorageDead(_15); // scope 6 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_12); // scope 5 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_11); // scope 4 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_10); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 +- StorageDead(_9); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 +- StorageLive(_18); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + StorageLive(_19); // scope 0 at $DIR/reference_prop.rs:+22:13: +22:18 + _19 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+22:21: +22:28 + StorageLive(_20); // scope 8 at $DIR/reference_prop.rs:+23:13: +23:14 + _20 = &mut _19; // scope 8 at $DIR/reference_prop.rs:+23:17: +23:23 + StorageLive(_21); // scope 9 at $DIR/reference_prop.rs:+24:13: +24:14 + _21 = &_20; // scope 9 at $DIR/reference_prop.rs:+24:17: +24:19 + StorageLive(_22); // scope 10 at $DIR/reference_prop.rs:+25:13: +25:14 + _22 = (*_20); // scope 10 at $DIR/reference_prop.rs:+25:17: +25:19 + StorageLive(_23); // scope 11 at $DIR/reference_prop.rs:+26:9: +26:19 + StorageLive(_24); // scope 11 at $DIR/reference_prop.rs:+26:16: +26:18 + _24 = (); // scope 11 at $DIR/reference_prop.rs:+26:16: +26:18 + _23 = opaque::<()>(move _24) -> bb3; // scope 11 at $DIR/reference_prop.rs:+26:9: +26:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:110:9: 110:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb3: { + StorageDead(_24); // scope 11 at $DIR/reference_prop.rs:+26:18: +26:19 + StorageDead(_23); // scope 11 at $DIR/reference_prop.rs:+26:19: +26:20 +- _18 = const (); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + StorageDead(_22); // scope 10 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_21); // scope 9 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_20); // scope 8 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_19); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 +- StorageDead(_18); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 +- StorageLive(_25); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + StorageLive(_26); // scope 0 at $DIR/reference_prop.rs:+31:13: +31:18 + _26 = const 5_usize; // scope 0 at $DIR/reference_prop.rs:+31:21: +31:28 + StorageLive(_27); // scope 12 at $DIR/reference_prop.rs:+32:13: +32:18 + _27 = &mut _26; // scope 12 at $DIR/reference_prop.rs:+32:21: +32:27 + StorageLive(_28); // scope 13 at $DIR/reference_prop.rs:+33:13: +33:14 + _28 = &mut _27; // scope 13 at $DIR/reference_prop.rs:+33:17: +33:23 + StorageLive(_29); // scope 14 at $DIR/reference_prop.rs:+34:13: +34:14 + _29 = (*_27); // scope 14 at $DIR/reference_prop.rs:+34:17: +34:19 + StorageLive(_30); // scope 15 at $DIR/reference_prop.rs:+35:9: +35:19 + StorageLive(_31); // scope 15 at $DIR/reference_prop.rs:+35:16: +35:18 + _31 = (); // scope 15 at $DIR/reference_prop.rs:+35:16: +35:18 + _30 = opaque::<()>(move _31) -> bb4; // scope 15 at $DIR/reference_prop.rs:+35:9: +35:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:119:9: 119:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb4: { + StorageDead(_31); // scope 15 at $DIR/reference_prop.rs:+35:18: +35:19 + StorageDead(_30); // scope 15 at $DIR/reference_prop.rs:+35:19: +35:20 +- _25 = const (); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + StorageDead(_29); // scope 14 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_28); // scope 13 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_27); // scope 12 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_26); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 +- StorageDead(_25); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 +- StorageLive(_32); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + StorageLive(_33); // scope 0 at $DIR/reference_prop.rs:+40:13: +40:18 + _33 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+40:21: +40:28 + StorageLive(_34); // scope 16 at $DIR/reference_prop.rs:+41:13: +41:14 + _34 = &mut _33; // scope 16 at $DIR/reference_prop.rs:+41:17: +41:23 + StorageLive(_35); // scope 17 at $DIR/reference_prop.rs:+42:13: +42:14 + _35 = (*_34); // scope 17 at $DIR/reference_prop.rs:+42:17: +42:19 + StorageLive(_36); // scope 18 at $DIR/reference_prop.rs:+43:9: +43:18 + StorageLive(_37); // scope 18 at $DIR/reference_prop.rs:+43:16: +43:17 + _37 = move _34; // scope 18 at $DIR/reference_prop.rs:+43:16: +43:17 + _36 = opaque::<&mut usize>(move _37) -> bb5; // scope 18 at $DIR/reference_prop.rs:+43:9: +43:18 + // mir::Constant + // + span: $DIR/reference_prop.rs:127:9: 127:15 + // + literal: Const { ty: fn(&mut usize) {opaque::<&mut usize>}, val: Value(<ZST>) } + } + + bb5: { + StorageDead(_37); // scope 18 at $DIR/reference_prop.rs:+43:17: +43:18 + StorageDead(_36); // scope 18 at $DIR/reference_prop.rs:+43:18: +43:19 +- _32 = const (); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + StorageDead(_35); // scope 17 at $DIR/reference_prop.rs:+44:5: +44:6 + StorageDead(_34); // scope 16 at $DIR/reference_prop.rs:+44:5: +44:6 + StorageDead(_33); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 +- StorageDead(_32); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 +- StorageLive(_38); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + StorageLive(_39); // scope 0 at $DIR/reference_prop.rs:+48:13: +48:18 + _39 = const 7_usize; // scope 0 at $DIR/reference_prop.rs:+48:21: +48:28 + StorageLive(_40); // scope 19 at $DIR/reference_prop.rs:+49:13: +49:15 + _40 = &mut _39; // scope 19 at $DIR/reference_prop.rs:+49:18: +49:24 + StorageLive(_41); // scope 20 at $DIR/reference_prop.rs:+50:13: +50:14 + _41 = (*_40); // scope 20 at $DIR/reference_prop.rs:+50:17: +50:20 + StorageLive(_42); // scope 21 at $DIR/reference_prop.rs:+51:13: +51:15 + _42 = move _40; // scope 21 at $DIR/reference_prop.rs:+51:18: +51:20 + StorageLive(_43); // scope 22 at $DIR/reference_prop.rs:+52:13: +52:15 + _43 = (*_42); // scope 22 at $DIR/reference_prop.rs:+52:18: +52:21 + StorageLive(_44); // scope 23 at $DIR/reference_prop.rs:+53:13: +53:15 + _44 = move _42; // scope 23 at $DIR/reference_prop.rs:+53:18: +53:20 + StorageLive(_45); // scope 24 at $DIR/reference_prop.rs:+56:9: +56:19 + StorageLive(_46); // scope 24 at $DIR/reference_prop.rs:+56:16: +56:18 + _46 = move _44; // scope 24 at $DIR/reference_prop.rs:+56:16: +56:18 + _45 = opaque::<&mut usize>(move _46) -> bb6; // scope 24 at $DIR/reference_prop.rs:+56:9: +56:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:140:9: 140:15 + // + literal: Const { ty: fn(&mut usize) {opaque::<&mut usize>}, val: Value(<ZST>) } + } + + bb6: { + StorageDead(_46); // scope 24 at $DIR/reference_prop.rs:+56:18: +56:19 + StorageDead(_45); // scope 24 at $DIR/reference_prop.rs:+56:19: +56:20 +- _38 = const (); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + StorageDead(_44); // scope 23 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_43); // scope 22 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_42); // scope 21 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_41); // scope 20 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_40); // scope 19 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_39); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 +- StorageDead(_38); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 +- StorageLive(_47); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + StorageLive(_48); // scope 0 at $DIR/reference_prop.rs:+61:13: +61:14 + _48 = &mut (*_1); // scope 0 at $DIR/reference_prop.rs:+61:17: +61:29 + StorageLive(_49); // scope 25 at $DIR/reference_prop.rs:+62:13: +62:14 +- _49 = (*_48); // scope 25 at $DIR/reference_prop.rs:+62:17: +62:19 ++ _49 = (*_1); // scope 25 at $DIR/reference_prop.rs:+62:17: +62:19 + StorageLive(_50); // scope 26 at $DIR/reference_prop.rs:+63:9: +63:19 + StorageLive(_51); // scope 26 at $DIR/reference_prop.rs:+63:16: +63:18 + _51 = (); // scope 26 at $DIR/reference_prop.rs:+63:16: +63:18 + _50 = opaque::<()>(move _51) -> bb7; // scope 26 at $DIR/reference_prop.rs:+63:9: +63:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:147:9: 147:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb7: { + StorageDead(_51); // scope 26 at $DIR/reference_prop.rs:+63:18: +63:19 + StorageDead(_50); // scope 26 at $DIR/reference_prop.rs:+63:19: +63:20 +- _47 = const (); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + StorageDead(_49); // scope 25 at $DIR/reference_prop.rs:+64:5: +64:6 + StorageDead(_48); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 +- StorageDead(_47); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 + StorageLive(_52); // scope 0 at $DIR/reference_prop.rs:+68:13: +68:14 + _52 = &mut (*_2); // scope 0 at $DIR/reference_prop.rs:+68:17: +68:31 + StorageLive(_53); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 +- StorageLive(_54); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 +- _54 = &mut (*_1); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 +- _53 = &mut (*_54); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 ++ _53 = &mut (*_1); // scope 27 at $DIR/reference_prop.rs:+69:20: +69:32 + _2 = move _53; // scope 27 at $DIR/reference_prop.rs:+69:9: +69:32 + StorageDead(_53); // scope 27 at $DIR/reference_prop.rs:+69:31: +69:32 +- StorageDead(_54); // scope 27 at $DIR/reference_prop.rs:+69:32: +69:33 + StorageLive(_55); // scope 27 at $DIR/reference_prop.rs:+70:13: +70:14 + _55 = (*_52); // scope 27 at $DIR/reference_prop.rs:+70:17: +70:19 + StorageLive(_56); // scope 28 at $DIR/reference_prop.rs:+71:9: +71:19 + StorageLive(_57); // scope 28 at $DIR/reference_prop.rs:+71:16: +71:18 + _57 = (); // scope 28 at $DIR/reference_prop.rs:+71:16: +71:18 + _56 = opaque::<()>(move _57) -> bb8; // scope 28 at $DIR/reference_prop.rs:+71:9: +71:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:155:9: 155:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb8: { + StorageDead(_57); // scope 28 at $DIR/reference_prop.rs:+71:18: +71:19 + StorageDead(_56); // scope 28 at $DIR/reference_prop.rs:+71:19: +71:20 + _0 = const (); // scope 0 at $DIR/reference_prop.rs:+67:5: +72:6 + StorageDead(_55); // scope 27 at $DIR/reference_prop.rs:+72:5: +72:6 + StorageDead(_52); // scope 0 at $DIR/reference_prop.rs:+72:5: +72:6 + return; // scope 0 at $DIR/reference_prop.rs:+73:2: +73:2 } } diff --git a/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff index 235964e9536..7e3cafd6380 100644 --- a/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff +++ b/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff @@ -5,19 +5,31 @@ debug single => _1; // in scope 0 at $DIR/reference_prop.rs:+0:43: +0:49 debug multiple => _2; // in scope 0 at $DIR/reference_prop.rs:+0:59: +0:71 let mut _0: (); // return place in scope 0 at $DIR/reference_prop.rs:+0:81: +0:81 - let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 - let _7: (); // in scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - let mut _11: *mut usize; // in scope 0 at $DIR/reference_prop.rs:+13:13: +13:24 - let _13: (); // in scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - let _18: (); // in scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - let _23: (); // in scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - let _27: (); // in scope 0 at $DIR/reference_prop.rs:+39:9: +39:18 - let mut _28: *mut usize; // in scope 0 at $DIR/reference_prop.rs:+39:16: +39:17 - let _29: (); // in scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - let _36: (); // in scope 0 at $DIR/reference_prop.rs:+52:9: +52:19 - let mut _37: *mut usize; // in scope 0 at $DIR/reference_prop.rs:+52:16: +52:18 - let _38: (); // in scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 - let mut _42: *mut T; // in scope 0 at $DIR/reference_prop.rs:+64:20: +64:36 + let _3: (); // in scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 + let _7: (); // in scope 0 at $DIR/reference_prop.rs:+6:9: +6:19 + let mut _8: (); // in scope 0 at $DIR/reference_prop.rs:+6:16: +6:18 + let _9: (); // in scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + let mut _13: *mut usize; // in scope 0 at $DIR/reference_prop.rs:+14:13: +14:24 + let _15: (); // in scope 0 at $DIR/reference_prop.rs:+17:9: +17:19 + let mut _16: (); // in scope 0 at $DIR/reference_prop.rs:+17:16: +17:18 + let _17: (); // in scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + let _22: (); // in scope 0 at $DIR/reference_prop.rs:+26:9: +26:19 + let mut _23: (); // in scope 0 at $DIR/reference_prop.rs:+26:16: +26:18 + let _24: (); // in scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + let _29: (); // in scope 0 at $DIR/reference_prop.rs:+35:9: +35:19 + let mut _30: (); // in scope 0 at $DIR/reference_prop.rs:+35:16: +35:18 + let _31: (); // in scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + let _35: (); // in scope 0 at $DIR/reference_prop.rs:+43:9: +43:18 + let mut _36: *mut usize; // in scope 0 at $DIR/reference_prop.rs:+43:16: +43:17 + let _37: (); // in scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + let _44: (); // in scope 0 at $DIR/reference_prop.rs:+56:9: +56:19 + let mut _45: *mut usize; // in scope 0 at $DIR/reference_prop.rs:+56:16: +56:18 + let _46: (); // in scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + let _49: (); // in scope 0 at $DIR/reference_prop.rs:+63:9: +63:19 + let mut _50: (); // in scope 0 at $DIR/reference_prop.rs:+63:16: +63:18 + let mut _52: *mut T; // in scope 0 at $DIR/reference_prop.rs:+69:20: +69:36 + let _54: (); // in scope 0 at $DIR/reference_prop.rs:+71:9: +71:19 + let mut _55: (); // in scope 0 at $DIR/reference_prop.rs:+71:16: +71:18 scope 1 { let mut _4: usize; // in scope 1 at $DIR/reference_prop.rs:+3:13: +3:18 scope 2 { @@ -33,92 +45,92 @@ } } scope 5 { - let mut _8: usize; // in scope 5 at $DIR/reference_prop.rs:+10:13: +10:18 + let mut _10: usize; // in scope 5 at $DIR/reference_prop.rs:+11:13: +11:18 scope 6 { - debug a => _8; // in scope 6 at $DIR/reference_prop.rs:+10:13: +10:18 - let mut _9: usize; // in scope 6 at $DIR/reference_prop.rs:+11:13: +11:19 + debug a => _10; // in scope 6 at $DIR/reference_prop.rs:+11:13: +11:18 + let mut _11: usize; // in scope 6 at $DIR/reference_prop.rs:+12:13: +12:19 scope 7 { - debug a2 => _9; // in scope 7 at $DIR/reference_prop.rs:+11:13: +11:19 - let mut _10: *mut usize; // in scope 7 at $DIR/reference_prop.rs:+12:13: +12:18 + debug a2 => _11; // in scope 7 at $DIR/reference_prop.rs:+12:13: +12:19 + let mut _12: *mut usize; // in scope 7 at $DIR/reference_prop.rs:+13:13: +13:18 scope 8 { - debug b => _10; // in scope 8 at $DIR/reference_prop.rs:+12:13: +12:18 - let _12: usize; // in scope 8 at $DIR/reference_prop.rs:+15:13: +15:14 + debug b => _12; // in scope 8 at $DIR/reference_prop.rs:+13:13: +13:18 + let _14: usize; // in scope 8 at $DIR/reference_prop.rs:+16:13: +16:14 scope 9 { - debug c => _12; // in scope 9 at $DIR/reference_prop.rs:+15:13: +15:14 + debug c => _14; // in scope 9 at $DIR/reference_prop.rs:+16:13: +16:14 } } } } } scope 10 { - let mut _14: usize; // in scope 10 at $DIR/reference_prop.rs:+20:13: +20:18 + let mut _18: usize; // in scope 10 at $DIR/reference_prop.rs:+22:13: +22:18 scope 11 { - debug a => _14; // in scope 11 at $DIR/reference_prop.rs:+20:13: +20:18 - let _15: *mut usize; // in scope 11 at $DIR/reference_prop.rs:+21:13: +21:14 + debug a => _18; // in scope 11 at $DIR/reference_prop.rs:+22:13: +22:18 + let _19: *mut usize; // in scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 scope 12 { - debug b => _15; // in scope 12 at $DIR/reference_prop.rs:+21:13: +21:14 - let _16: &*mut usize; // in scope 12 at $DIR/reference_prop.rs:+22:13: +22:14 + debug b => _19; // in scope 12 at $DIR/reference_prop.rs:+23:13: +23:14 + let _20: &*mut usize; // in scope 12 at $DIR/reference_prop.rs:+24:13: +24:14 scope 13 { - debug d => _16; // in scope 13 at $DIR/reference_prop.rs:+22:13: +22:14 - let _17: usize; // in scope 13 at $DIR/reference_prop.rs:+23:13: +23:14 + debug d => _20; // in scope 13 at $DIR/reference_prop.rs:+24:13: +24:14 + let _21: usize; // in scope 13 at $DIR/reference_prop.rs:+25:13: +25:14 scope 14 { - debug c => _17; // in scope 14 at $DIR/reference_prop.rs:+23:13: +23:14 + debug c => _21; // in scope 14 at $DIR/reference_prop.rs:+25:13: +25:14 } } } } } scope 15 { - let mut _19: usize; // in scope 15 at $DIR/reference_prop.rs:+28:13: +28:18 + let mut _25: usize; // in scope 15 at $DIR/reference_prop.rs:+31:13: +31:18 scope 16 { - debug a => _19; // in scope 16 at $DIR/reference_prop.rs:+28:13: +28:18 - let mut _20: *mut usize; // in scope 16 at $DIR/reference_prop.rs:+29:13: +29:18 + debug a => _25; // in scope 16 at $DIR/reference_prop.rs:+31:13: +31:18 + let mut _26: *mut usize; // in scope 16 at $DIR/reference_prop.rs:+32:13: +32:18 scope 17 { - debug b => _20; // in scope 17 at $DIR/reference_prop.rs:+29:13: +29:18 - let _21: &mut *mut usize; // in scope 17 at $DIR/reference_prop.rs:+30:13: +30:14 + debug b => _26; // in scope 17 at $DIR/reference_prop.rs:+32:13: +32:18 + let _27: &mut *mut usize; // in scope 17 at $DIR/reference_prop.rs:+33:13: +33:14 scope 18 { - debug d => _21; // in scope 18 at $DIR/reference_prop.rs:+30:13: +30:14 - let _22: usize; // in scope 18 at $DIR/reference_prop.rs:+31:13: +31:14 + debug d => _27; // in scope 18 at $DIR/reference_prop.rs:+33:13: +33:14 + let _28: usize; // in scope 18 at $DIR/reference_prop.rs:+34:13: +34:14 scope 19 { - debug c => _22; // in scope 19 at $DIR/reference_prop.rs:+31:13: +31:14 + debug c => _28; // in scope 19 at $DIR/reference_prop.rs:+34:13: +34:14 } } } } } scope 20 { - let mut _24: usize; // in scope 20 at $DIR/reference_prop.rs:+36:13: +36:18 + let mut _32: usize; // in scope 20 at $DIR/reference_prop.rs:+40:13: +40:18 scope 21 { - debug a => _24; // in scope 21 at $DIR/reference_prop.rs:+36:13: +36:18 - let _25: *mut usize; // in scope 21 at $DIR/reference_prop.rs:+37:13: +37:14 + debug a => _32; // in scope 21 at $DIR/reference_prop.rs:+40:13: +40:18 + let _33: *mut usize; // in scope 21 at $DIR/reference_prop.rs:+41:13: +41:14 scope 22 { - debug b => _25; // in scope 22 at $DIR/reference_prop.rs:+37:13: +37:14 - let _26: usize; // in scope 22 at $DIR/reference_prop.rs:+38:13: +38:14 + debug b => _33; // in scope 22 at $DIR/reference_prop.rs:+41:13: +41:14 + let _34: usize; // in scope 22 at $DIR/reference_prop.rs:+42:13: +42:14 scope 23 { - debug c => _26; // in scope 23 at $DIR/reference_prop.rs:+38:13: +38:14 + debug c => _34; // in scope 23 at $DIR/reference_prop.rs:+42:13: +42:14 } } } } scope 24 { - let mut _30: usize; // in scope 24 at $DIR/reference_prop.rs:+44:13: +44:18 + let mut _38: usize; // in scope 24 at $DIR/reference_prop.rs:+48:13: +48:18 scope 25 { - debug a => _30; // in scope 25 at $DIR/reference_prop.rs:+44:13: +44:18 - let _31: *mut usize; // in scope 25 at $DIR/reference_prop.rs:+45:13: +45:15 + debug a => _38; // in scope 25 at $DIR/reference_prop.rs:+48:13: +48:18 + let _39: *mut usize; // in scope 25 at $DIR/reference_prop.rs:+49:13: +49:15 scope 26 { - debug b1 => _31; // in scope 26 at $DIR/reference_prop.rs:+45:13: +45:15 - let _32: usize; // in scope 26 at $DIR/reference_prop.rs:+46:13: +46:14 + debug b1 => _39; // in scope 26 at $DIR/reference_prop.rs:+49:13: +49:15 + let _40: usize; // in scope 26 at $DIR/reference_prop.rs:+50:13: +50:14 scope 27 { - debug c => _32; // in scope 27 at $DIR/reference_prop.rs:+46:13: +46:14 - let _33: *mut usize; // in scope 27 at $DIR/reference_prop.rs:+47:13: +47:15 + debug c => _40; // in scope 27 at $DIR/reference_prop.rs:+50:13: +50:14 + let _41: *mut usize; // in scope 27 at $DIR/reference_prop.rs:+51:13: +51:15 scope 28 { - debug b2 => _33; // in scope 28 at $DIR/reference_prop.rs:+47:13: +47:15 - let _34: usize; // in scope 28 at $DIR/reference_prop.rs:+48:13: +48:15 + debug b2 => _41; // in scope 28 at $DIR/reference_prop.rs:+51:13: +51:15 + let _42: usize; // in scope 28 at $DIR/reference_prop.rs:+52:13: +52:15 scope 29 { - debug c2 => _34; // in scope 29 at $DIR/reference_prop.rs:+48:13: +48:15 - let _35: *mut usize; // in scope 29 at $DIR/reference_prop.rs:+49:13: +49:15 + debug c2 => _42; // in scope 29 at $DIR/reference_prop.rs:+52:13: +52:15 + let _43: *mut usize; // in scope 29 at $DIR/reference_prop.rs:+53:13: +53:15 scope 30 { - debug b3 => _35; // in scope 30 at $DIR/reference_prop.rs:+49:13: +49:15 + debug b3 => _43; // in scope 30 at $DIR/reference_prop.rs:+53:13: +53:15 } } } @@ -127,168 +139,240 @@ } } scope 31 { - let _39: *mut T; // in scope 31 at $DIR/reference_prop.rs:+57:13: +57:14 + let _47: *mut T; // in scope 31 at $DIR/reference_prop.rs:+61:13: +61:14 scope 32 { - debug a => _39; // in scope 32 at $DIR/reference_prop.rs:+57:13: +57:14 - let _40: T; // in scope 32 at $DIR/reference_prop.rs:+58:13: +58:14 + debug a => _47; // in scope 32 at $DIR/reference_prop.rs:+61:13: +61:14 + let _48: T; // in scope 32 at $DIR/reference_prop.rs:+62:13: +62:14 scope 33 { - debug b => _40; // in scope 33 at $DIR/reference_prop.rs:+58:13: +58:14 + debug b => _48; // in scope 33 at $DIR/reference_prop.rs:+62:13: +62:14 } } } scope 34 { - let _41: *mut T; // in scope 34 at $DIR/reference_prop.rs:+63:13: +63:14 + let _51: *mut T; // in scope 34 at $DIR/reference_prop.rs:+68:13: +68:14 scope 35 { - debug a => _41; // in scope 35 at $DIR/reference_prop.rs:+63:13: +63:14 - let _43: T; // in scope 35 at $DIR/reference_prop.rs:+65:13: +65:14 + debug a => _51; // in scope 35 at $DIR/reference_prop.rs:+68:13: +68:14 + let _53: T; // in scope 35 at $DIR/reference_prop.rs:+70:13: +70:14 scope 36 { - debug b => _43; // in scope 36 at $DIR/reference_prop.rs:+65:13: +65:14 + debug b => _53; // in scope 36 at $DIR/reference_prop.rs:+70:13: +70:14 } } } bb0: { -- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +6:6 +- StorageLive(_3); // scope 0 at $DIR/reference_prop.rs:+2:5: +7:6 StorageLive(_4); // scope 1 at $DIR/reference_prop.rs:+3:13: +3:18 _4 = const 5_usize; // scope 1 at $DIR/reference_prop.rs:+3:21: +3:28 StorageLive(_5); // scope 2 at $DIR/reference_prop.rs:+4:13: +4:14 _5 = &raw mut _4; // scope 2 at $DIR/reference_prop.rs:+4:17: +4:27 StorageLive(_6); // scope 3 at $DIR/reference_prop.rs:+5:13: +5:14 - _6 = (*_5); // scope 3 at $DIR/reference_prop.rs:+5:17: +5:19 -- _3 = const (); // scope 1 at $DIR/reference_prop.rs:+2:5: +6:6 + _6 = _4; // scope 3 at $DIR/reference_prop.rs:+5:17: +5:19 - StorageDead(_6); // scope 3 at $DIR/reference_prop.rs:+6:5: +6:6 - StorageDead(_5); // scope 2 at $DIR/reference_prop.rs:+6:5: +6:6 - StorageDead(_4); // scope 1 at $DIR/reference_prop.rs:+6:5: +6:6 -- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+6:5: +6:6 -- StorageLive(_7); // scope 0 at $DIR/reference_prop.rs:+9:5: +16:6 - StorageLive(_8); // scope 5 at $DIR/reference_prop.rs:+10:13: +10:18 - _8 = const 5_usize; // scope 5 at $DIR/reference_prop.rs:+10:21: +10:28 - StorageLive(_9); // scope 6 at $DIR/reference_prop.rs:+11:13: +11:19 - _9 = const 7_usize; // scope 6 at $DIR/reference_prop.rs:+11:22: +11:29 - StorageLive(_10); // scope 7 at $DIR/reference_prop.rs:+12:13: +12:18 - _10 = &raw mut _8; // scope 7 at $DIR/reference_prop.rs:+12:21: +12:31 - StorageLive(_11); // scope 8 at $DIR/reference_prop.rs:+13:13: +13:24 - _11 = &raw mut _9; // scope 8 at $DIR/reference_prop.rs:+13:13: +13:24 - _10 = move _11; // scope 8 at $DIR/reference_prop.rs:+13:9: +13:24 - StorageDead(_11); // scope 8 at $DIR/reference_prop.rs:+13:23: +13:24 - StorageLive(_12); // scope 8 at $DIR/reference_prop.rs:+15:13: +15:14 - _12 = (*_10); // scope 8 at $DIR/reference_prop.rs:+15:17: +15:19 -- _7 = const (); // scope 5 at $DIR/reference_prop.rs:+9:5: +16:6 - StorageDead(_12); // scope 8 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_10); // scope 7 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_9); // scope 6 at $DIR/reference_prop.rs:+16:5: +16:6 - StorageDead(_8); // scope 5 at $DIR/reference_prop.rs:+16:5: +16:6 -- StorageDead(_7); // scope 0 at $DIR/reference_prop.rs:+16:5: +16:6 -- StorageLive(_13); // scope 0 at $DIR/reference_prop.rs:+19:5: +24:6 - StorageLive(_14); // scope 10 at $DIR/reference_prop.rs:+20:13: +20:18 - _14 = const 5_usize; // scope 10 at $DIR/reference_prop.rs:+20:21: +20:28 - StorageLive(_15); // scope 11 at $DIR/reference_prop.rs:+21:13: +21:14 - _15 = &raw mut _14; // scope 11 at $DIR/reference_prop.rs:+21:17: +21:27 - StorageLive(_16); // scope 12 at $DIR/reference_prop.rs:+22:13: +22:14 - _16 = &_15; // scope 12 at $DIR/reference_prop.rs:+22:17: +22:19 - StorageLive(_17); // scope 13 at $DIR/reference_prop.rs:+23:13: +23:14 - _17 = (*_15); // scope 13 at $DIR/reference_prop.rs:+23:17: +23:19 -- _13 = const (); // scope 10 at $DIR/reference_prop.rs:+19:5: +24:6 - StorageDead(_17); // scope 13 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_16); // scope 12 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_15); // scope 11 at $DIR/reference_prop.rs:+24:5: +24:6 - StorageDead(_14); // scope 10 at $DIR/reference_prop.rs:+24:5: +24:6 -- StorageDead(_13); // scope 0 at $DIR/reference_prop.rs:+24:5: +24:6 -- StorageLive(_18); // scope 0 at $DIR/reference_prop.rs:+27:5: +32:6 - StorageLive(_19); // scope 15 at $DIR/reference_prop.rs:+28:13: +28:18 - _19 = const 5_usize; // scope 15 at $DIR/reference_prop.rs:+28:21: +28:28 - StorageLive(_20); // scope 16 at $DIR/reference_prop.rs:+29:13: +29:18 - _20 = &raw mut _19; // scope 16 at $DIR/reference_prop.rs:+29:21: +29:31 - StorageLive(_21); // scope 17 at $DIR/reference_prop.rs:+30:13: +30:14 - _21 = &mut _20; // scope 17 at $DIR/reference_prop.rs:+30:17: +30:23 - StorageLive(_22); // scope 18 at $DIR/reference_prop.rs:+31:13: +31:14 - _22 = (*_20); // scope 18 at $DIR/reference_prop.rs:+31:17: +31:19 -- _18 = const (); // scope 15 at $DIR/reference_prop.rs:+27:5: +32:6 - StorageDead(_22); // scope 18 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_21); // scope 17 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_20); // scope 16 at $DIR/reference_prop.rs:+32:5: +32:6 - StorageDead(_19); // scope 15 at $DIR/reference_prop.rs:+32:5: +32:6 -- StorageDead(_18); // scope 0 at $DIR/reference_prop.rs:+32:5: +32:6 -- StorageLive(_23); // scope 0 at $DIR/reference_prop.rs:+35:5: +40:6 - StorageLive(_24); // scope 20 at $DIR/reference_prop.rs:+36:13: +36:18 - _24 = const 7_usize; // scope 20 at $DIR/reference_prop.rs:+36:21: +36:28 - StorageLive(_25); // scope 21 at $DIR/reference_prop.rs:+37:13: +37:14 - _25 = &raw mut _24; // scope 21 at $DIR/reference_prop.rs:+37:17: +37:27 - StorageLive(_26); // scope 22 at $DIR/reference_prop.rs:+38:13: +38:14 - _26 = (*_25); // scope 22 at $DIR/reference_prop.rs:+38:17: +38:19 - StorageLive(_27); // scope 23 at $DIR/reference_prop.rs:+39:9: +39:18 - StorageLive(_28); // scope 23 at $DIR/reference_prop.rs:+39:16: +39:17 - _28 = _25; // scope 23 at $DIR/reference_prop.rs:+39:16: +39:17 - _27 = opaque::<*mut usize>(move _28) -> bb1; // scope 23 at $DIR/reference_prop.rs:+39:9: +39:18 + StorageLive(_7); // scope 4 at $DIR/reference_prop.rs:+6:9: +6:19 + StorageLive(_8); // scope 4 at $DIR/reference_prop.rs:+6:16: +6:18 + _8 = (); // scope 4 at $DIR/reference_prop.rs:+6:16: +6:18 + _7 = opaque::<()>(move _8) -> bb1; // scope 4 at $DIR/reference_prop.rs:+6:9: +6:19 // mir::Constant - // + span: $DIR/reference_prop.rs:263:9: 263:15 - // + literal: Const { ty: fn(*mut usize) {opaque::<*mut usize>}, val: Value(<ZST>) } + // + span: $DIR/reference_prop.rs:249:9: 249:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } } bb1: { - StorageDead(_28); // scope 23 at $DIR/reference_prop.rs:+39:17: +39:18 - StorageDead(_27); // scope 23 at $DIR/reference_prop.rs:+39:18: +39:19 -- _23 = const (); // scope 20 at $DIR/reference_prop.rs:+35:5: +40:6 - StorageDead(_26); // scope 22 at $DIR/reference_prop.rs:+40:5: +40:6 - StorageDead(_25); // scope 21 at $DIR/reference_prop.rs:+40:5: +40:6 - StorageDead(_24); // scope 20 at $DIR/reference_prop.rs:+40:5: +40:6 -- StorageDead(_23); // scope 0 at $DIR/reference_prop.rs:+40:5: +40:6 -- StorageLive(_29); // scope 0 at $DIR/reference_prop.rs:+43:5: +53:6 - StorageLive(_30); // scope 24 at $DIR/reference_prop.rs:+44:13: +44:18 - _30 = const 7_usize; // scope 24 at $DIR/reference_prop.rs:+44:21: +44:28 - StorageLive(_31); // scope 25 at $DIR/reference_prop.rs:+45:13: +45:15 - _31 = &raw mut _30; // scope 25 at $DIR/reference_prop.rs:+45:18: +45:28 - StorageLive(_32); // scope 26 at $DIR/reference_prop.rs:+46:13: +46:14 - _32 = (*_31); // scope 26 at $DIR/reference_prop.rs:+46:17: +46:20 - StorageLive(_33); // scope 27 at $DIR/reference_prop.rs:+47:13: +47:15 - _33 = _31; // scope 27 at $DIR/reference_prop.rs:+47:18: +47:20 - StorageLive(_34); // scope 28 at $DIR/reference_prop.rs:+48:13: +48:15 - _34 = (*_33); // scope 28 at $DIR/reference_prop.rs:+48:18: +48:21 - StorageLive(_35); // scope 29 at $DIR/reference_prop.rs:+49:13: +49:15 - _35 = _33; // scope 29 at $DIR/reference_prop.rs:+49:18: +49:20 - StorageLive(_36); // scope 30 at $DIR/reference_prop.rs:+52:9: +52:19 - StorageLive(_37); // scope 30 at $DIR/reference_prop.rs:+52:16: +52:18 - _37 = _35; // scope 30 at $DIR/reference_prop.rs:+52:16: +52:18 - _36 = opaque::<*mut usize>(move _37) -> bb2; // scope 30 at $DIR/reference_prop.rs:+52:9: +52:19 + StorageDead(_8); // scope 4 at $DIR/reference_prop.rs:+6:18: +6:19 + StorageDead(_7); // scope 4 at $DIR/reference_prop.rs:+6:19: +6:20 +- _3 = const (); // scope 1 at $DIR/reference_prop.rs:+2:5: +7:6 + StorageDead(_6); // scope 3 at $DIR/reference_prop.rs:+7:5: +7:6 + StorageDead(_5); // scope 2 at $DIR/reference_prop.rs:+7:5: +7:6 + StorageDead(_4); // scope 1 at $DIR/reference_prop.rs:+7:5: +7:6 +- StorageDead(_3); // scope 0 at $DIR/reference_prop.rs:+7:5: +7:6 +- StorageLive(_9); // scope 0 at $DIR/reference_prop.rs:+10:5: +18:6 + StorageLive(_10); // scope 5 at $DIR/reference_prop.rs:+11:13: +11:18 + _10 = const 5_usize; // scope 5 at $DIR/reference_prop.rs:+11:21: +11:28 + StorageLive(_11); // scope 6 at $DIR/reference_prop.rs:+12:13: +12:19 + _11 = const 7_usize; // scope 6 at $DIR/reference_prop.rs:+12:22: +12:29 + StorageLive(_12); // scope 7 at $DIR/reference_prop.rs:+13:13: +13:18 + _12 = &raw mut _10; // scope 7 at $DIR/reference_prop.rs:+13:21: +13:31 + StorageLive(_13); // scope 8 at $DIR/reference_prop.rs:+14:13: +14:24 + _13 = &raw mut _11; // scope 8 at $DIR/reference_prop.rs:+14:13: +14:24 + _12 = move _13; // scope 8 at $DIR/reference_prop.rs:+14:9: +14:24 + StorageDead(_13); // scope 8 at $DIR/reference_prop.rs:+14:23: +14:24 + StorageLive(_14); // scope 8 at $DIR/reference_prop.rs:+16:13: +16:14 + _14 = (*_12); // scope 8 at $DIR/reference_prop.rs:+16:17: +16:19 + StorageLive(_15); // scope 9 at $DIR/reference_prop.rs:+17:9: +17:19 + StorageLive(_16); // scope 9 at $DIR/reference_prop.rs:+17:16: +17:18 + _16 = (); // scope 9 at $DIR/reference_prop.rs:+17:16: +17:18 + _15 = opaque::<()>(move _16) -> bb2; // scope 9 at $DIR/reference_prop.rs:+17:9: +17:19 // mir::Constant - // + span: $DIR/reference_prop.rs:276:9: 276:15 - // + literal: Const { ty: fn(*mut usize) {opaque::<*mut usize>}, val: Value(<ZST>) } + // + span: $DIR/reference_prop.rs:260:9: 260:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } } bb2: { - StorageDead(_37); // scope 30 at $DIR/reference_prop.rs:+52:18: +52:19 - StorageDead(_36); // scope 30 at $DIR/reference_prop.rs:+52:19: +52:20 -- _29 = const (); // scope 24 at $DIR/reference_prop.rs:+43:5: +53:6 - StorageDead(_35); // scope 29 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_34); // scope 28 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_33); // scope 27 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_32); // scope 26 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_31); // scope 25 at $DIR/reference_prop.rs:+53:5: +53:6 - StorageDead(_30); // scope 24 at $DIR/reference_prop.rs:+53:5: +53:6 -- StorageDead(_29); // scope 0 at $DIR/reference_prop.rs:+53:5: +53:6 -- StorageLive(_38); // scope 0 at $DIR/reference_prop.rs:+56:5: +59:6 - StorageLive(_39); // scope 31 at $DIR/reference_prop.rs:+57:13: +57:14 - _39 = &raw mut (*_1); // scope 31 at $DIR/reference_prop.rs:+57:17: +57:33 - StorageLive(_40); // scope 32 at $DIR/reference_prop.rs:+58:13: +58:14 -- _40 = (*_39); // scope 32 at $DIR/reference_prop.rs:+58:17: +58:19 -- _38 = const (); // scope 31 at $DIR/reference_prop.rs:+56:5: +59:6 -+ _40 = (*_1); // scope 32 at $DIR/reference_prop.rs:+58:17: +58:19 - StorageDead(_40); // scope 32 at $DIR/reference_prop.rs:+59:5: +59:6 - StorageDead(_39); // scope 31 at $DIR/reference_prop.rs:+59:5: +59:6 -- StorageDead(_38); // scope 0 at $DIR/reference_prop.rs:+59:5: +59:6 - StorageLive(_41); // scope 34 at $DIR/reference_prop.rs:+63:13: +63:14 - _41 = &raw mut (*_2); // scope 34 at $DIR/reference_prop.rs:+63:17: +63:35 - StorageLive(_42); // scope 35 at $DIR/reference_prop.rs:+64:20: +64:36 - _42 = &raw mut (*_1); // scope 35 at $DIR/reference_prop.rs:+64:20: +64:36 - _2 = move _42; // scope 35 at $DIR/reference_prop.rs:+64:9: +64:36 - StorageDead(_42); // scope 35 at $DIR/reference_prop.rs:+64:35: +64:36 - StorageLive(_43); // scope 35 at $DIR/reference_prop.rs:+65:13: +65:14 - _43 = (*_41); // scope 35 at $DIR/reference_prop.rs:+65:17: +65:19 - _0 = const (); // scope 34 at $DIR/reference_prop.rs:+62:5: +66:6 - StorageDead(_43); // scope 35 at $DIR/reference_prop.rs:+66:5: +66:6 - StorageDead(_41); // scope 34 at $DIR/reference_prop.rs:+66:5: +66:6 - return; // scope 0 at $DIR/reference_prop.rs:+67:2: +67:2 + StorageDead(_16); // scope 9 at $DIR/reference_prop.rs:+17:18: +17:19 + StorageDead(_15); // scope 9 at $DIR/reference_prop.rs:+17:19: +17:20 +- _9 = const (); // scope 5 at $DIR/reference_prop.rs:+10:5: +18:6 + StorageDead(_14); // scope 8 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_12); // scope 7 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_11); // scope 6 at $DIR/reference_prop.rs:+18:5: +18:6 + StorageDead(_10); // scope 5 at $DIR/reference_prop.rs:+18:5: +18:6 +- StorageDead(_9); // scope 0 at $DIR/reference_prop.rs:+18:5: +18:6 +- StorageLive(_17); // scope 0 at $DIR/reference_prop.rs:+21:5: +27:6 + StorageLive(_18); // scope 10 at $DIR/reference_prop.rs:+22:13: +22:18 + _18 = const 5_usize; // scope 10 at $DIR/reference_prop.rs:+22:21: +22:28 + StorageLive(_19); // scope 11 at $DIR/reference_prop.rs:+23:13: +23:14 + _19 = &raw mut _18; // scope 11 at $DIR/reference_prop.rs:+23:17: +23:27 + StorageLive(_20); // scope 12 at $DIR/reference_prop.rs:+24:13: +24:14 + _20 = &_19; // scope 12 at $DIR/reference_prop.rs:+24:17: +24:19 + StorageLive(_21); // scope 13 at $DIR/reference_prop.rs:+25:13: +25:14 + _21 = (*_19); // scope 13 at $DIR/reference_prop.rs:+25:17: +25:19 + StorageLive(_22); // scope 14 at $DIR/reference_prop.rs:+26:9: +26:19 + StorageLive(_23); // scope 14 at $DIR/reference_prop.rs:+26:16: +26:18 + _23 = (); // scope 14 at $DIR/reference_prop.rs:+26:16: +26:18 + _22 = opaque::<()>(move _23) -> bb3; // scope 14 at $DIR/reference_prop.rs:+26:9: +26:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:269:9: 269:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb3: { + StorageDead(_23); // scope 14 at $DIR/reference_prop.rs:+26:18: +26:19 + StorageDead(_22); // scope 14 at $DIR/reference_prop.rs:+26:19: +26:20 +- _17 = const (); // scope 10 at $DIR/reference_prop.rs:+21:5: +27:6 + StorageDead(_21); // scope 13 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_20); // scope 12 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_19); // scope 11 at $DIR/reference_prop.rs:+27:5: +27:6 + StorageDead(_18); // scope 10 at $DIR/reference_prop.rs:+27:5: +27:6 +- StorageDead(_17); // scope 0 at $DIR/reference_prop.rs:+27:5: +27:6 +- StorageLive(_24); // scope 0 at $DIR/reference_prop.rs:+30:5: +36:6 + StorageLive(_25); // scope 15 at $DIR/reference_prop.rs:+31:13: +31:18 + _25 = const 5_usize; // scope 15 at $DIR/reference_prop.rs:+31:21: +31:28 + StorageLive(_26); // scope 16 at $DIR/reference_prop.rs:+32:13: +32:18 + _26 = &raw mut _25; // scope 16 at $DIR/reference_prop.rs:+32:21: +32:31 + StorageLive(_27); // scope 17 at $DIR/reference_prop.rs:+33:13: +33:14 + _27 = &mut _26; // scope 17 at $DIR/reference_prop.rs:+33:17: +33:23 + StorageLive(_28); // scope 18 at $DIR/reference_prop.rs:+34:13: +34:14 + _28 = (*_26); // scope 18 at $DIR/reference_prop.rs:+34:17: +34:19 + StorageLive(_29); // scope 19 at $DIR/reference_prop.rs:+35:9: +35:19 + StorageLive(_30); // scope 19 at $DIR/reference_prop.rs:+35:16: +35:18 + _30 = (); // scope 19 at $DIR/reference_prop.rs:+35:16: +35:18 + _29 = opaque::<()>(move _30) -> bb4; // scope 19 at $DIR/reference_prop.rs:+35:9: +35:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:278:9: 278:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb4: { + StorageDead(_30); // scope 19 at $DIR/reference_prop.rs:+35:18: +35:19 + StorageDead(_29); // scope 19 at $DIR/reference_prop.rs:+35:19: +35:20 +- _24 = const (); // scope 15 at $DIR/reference_prop.rs:+30:5: +36:6 + StorageDead(_28); // scope 18 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_27); // scope 17 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_26); // scope 16 at $DIR/reference_prop.rs:+36:5: +36:6 + StorageDead(_25); // scope 15 at $DIR/reference_prop.rs:+36:5: +36:6 +- StorageDead(_24); // scope 0 at $DIR/reference_prop.rs:+36:5: +36:6 +- StorageLive(_31); // scope 0 at $DIR/reference_prop.rs:+39:5: +44:6 + StorageLive(_32); // scope 20 at $DIR/reference_prop.rs:+40:13: +40:18 + _32 = const 7_usize; // scope 20 at $DIR/reference_prop.rs:+40:21: +40:28 + StorageLive(_33); // scope 21 at $DIR/reference_prop.rs:+41:13: +41:14 + _33 = &raw mut _32; // scope 21 at $DIR/reference_prop.rs:+41:17: +41:27 + StorageLive(_34); // scope 22 at $DIR/reference_prop.rs:+42:13: +42:14 + _34 = (*_33); // scope 22 at $DIR/reference_prop.rs:+42:17: +42:19 + StorageLive(_35); // scope 23 at $DIR/reference_prop.rs:+43:9: +43:18 + StorageLive(_36); // scope 23 at $DIR/reference_prop.rs:+43:16: +43:17 + _36 = _33; // scope 23 at $DIR/reference_prop.rs:+43:16: +43:17 + _35 = opaque::<*mut usize>(move _36) -> bb5; // scope 23 at $DIR/reference_prop.rs:+43:9: +43:18 + // mir::Constant + // + span: $DIR/reference_prop.rs:286:9: 286:15 + // + literal: Const { ty: fn(*mut usize) {opaque::<*mut usize>}, val: Value(<ZST>) } + } + + bb5: { + StorageDead(_36); // scope 23 at $DIR/reference_prop.rs:+43:17: +43:18 + StorageDead(_35); // scope 23 at $DIR/reference_prop.rs:+43:18: +43:19 +- _31 = const (); // scope 20 at $DIR/reference_prop.rs:+39:5: +44:6 + StorageDead(_34); // scope 22 at $DIR/reference_prop.rs:+44:5: +44:6 + StorageDead(_33); // scope 21 at $DIR/reference_prop.rs:+44:5: +44:6 + StorageDead(_32); // scope 20 at $DIR/reference_prop.rs:+44:5: +44:6 +- StorageDead(_31); // scope 0 at $DIR/reference_prop.rs:+44:5: +44:6 +- StorageLive(_37); // scope 0 at $DIR/reference_prop.rs:+47:5: +57:6 + StorageLive(_38); // scope 24 at $DIR/reference_prop.rs:+48:13: +48:18 + _38 = const 7_usize; // scope 24 at $DIR/reference_prop.rs:+48:21: +48:28 + StorageLive(_39); // scope 25 at $DIR/reference_prop.rs:+49:13: +49:15 + _39 = &raw mut _38; // scope 25 at $DIR/reference_prop.rs:+49:18: +49:28 + StorageLive(_40); // scope 26 at $DIR/reference_prop.rs:+50:13: +50:14 + _40 = (*_39); // scope 26 at $DIR/reference_prop.rs:+50:17: +50:20 + StorageLive(_41); // scope 27 at $DIR/reference_prop.rs:+51:13: +51:15 + _41 = _39; // scope 27 at $DIR/reference_prop.rs:+51:18: +51:20 + StorageLive(_42); // scope 28 at $DIR/reference_prop.rs:+52:13: +52:15 + _42 = (*_41); // scope 28 at $DIR/reference_prop.rs:+52:18: +52:21 + StorageLive(_43); // scope 29 at $DIR/reference_prop.rs:+53:13: +53:15 + _43 = _41; // scope 29 at $DIR/reference_prop.rs:+53:18: +53:20 + StorageLive(_44); // scope 30 at $DIR/reference_prop.rs:+56:9: +56:19 + StorageLive(_45); // scope 30 at $DIR/reference_prop.rs:+56:16: +56:18 + _45 = _43; // scope 30 at $DIR/reference_prop.rs:+56:16: +56:18 + _44 = opaque::<*mut usize>(move _45) -> bb6; // scope 30 at $DIR/reference_prop.rs:+56:9: +56:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:299:9: 299:15 + // + literal: Const { ty: fn(*mut usize) {opaque::<*mut usize>}, val: Value(<ZST>) } + } + + bb6: { + StorageDead(_45); // scope 30 at $DIR/reference_prop.rs:+56:18: +56:19 + StorageDead(_44); // scope 30 at $DIR/reference_prop.rs:+56:19: +56:20 +- _37 = const (); // scope 24 at $DIR/reference_prop.rs:+47:5: +57:6 + StorageDead(_43); // scope 29 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_42); // scope 28 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_41); // scope 27 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_40); // scope 26 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_39); // scope 25 at $DIR/reference_prop.rs:+57:5: +57:6 + StorageDead(_38); // scope 24 at $DIR/reference_prop.rs:+57:5: +57:6 +- StorageDead(_37); // scope 0 at $DIR/reference_prop.rs:+57:5: +57:6 +- StorageLive(_46); // scope 0 at $DIR/reference_prop.rs:+60:5: +64:6 + StorageLive(_47); // scope 31 at $DIR/reference_prop.rs:+61:13: +61:14 + _47 = &raw mut (*_1); // scope 31 at $DIR/reference_prop.rs:+61:17: +61:33 + StorageLive(_48); // scope 32 at $DIR/reference_prop.rs:+62:13: +62:14 +- _48 = (*_47); // scope 32 at $DIR/reference_prop.rs:+62:17: +62:19 ++ _48 = (*_1); // scope 32 at $DIR/reference_prop.rs:+62:17: +62:19 + StorageLive(_49); // scope 33 at $DIR/reference_prop.rs:+63:9: +63:19 + StorageLive(_50); // scope 33 at $DIR/reference_prop.rs:+63:16: +63:18 + _50 = (); // scope 33 at $DIR/reference_prop.rs:+63:16: +63:18 + _49 = opaque::<()>(move _50) -> bb7; // scope 33 at $DIR/reference_prop.rs:+63:9: +63:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:306:9: 306:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb7: { + StorageDead(_50); // scope 33 at $DIR/reference_prop.rs:+63:18: +63:19 + StorageDead(_49); // scope 33 at $DIR/reference_prop.rs:+63:19: +63:20 +- _46 = const (); // scope 31 at $DIR/reference_prop.rs:+60:5: +64:6 + StorageDead(_48); // scope 32 at $DIR/reference_prop.rs:+64:5: +64:6 + StorageDead(_47); // scope 31 at $DIR/reference_prop.rs:+64:5: +64:6 +- StorageDead(_46); // scope 0 at $DIR/reference_prop.rs:+64:5: +64:6 + StorageLive(_51); // scope 34 at $DIR/reference_prop.rs:+68:13: +68:14 + _51 = &raw mut (*_2); // scope 34 at $DIR/reference_prop.rs:+68:17: +68:35 + StorageLive(_52); // scope 35 at $DIR/reference_prop.rs:+69:20: +69:36 + _52 = &raw mut (*_1); // scope 35 at $DIR/reference_prop.rs:+69:20: +69:36 + _2 = move _52; // scope 35 at $DIR/reference_prop.rs:+69:9: +69:36 + StorageDead(_52); // scope 35 at $DIR/reference_prop.rs:+69:35: +69:36 + StorageLive(_53); // scope 35 at $DIR/reference_prop.rs:+70:13: +70:14 + _53 = (*_51); // scope 35 at $DIR/reference_prop.rs:+70:17: +70:19 + StorageLive(_54); // scope 36 at $DIR/reference_prop.rs:+71:9: +71:19 + StorageLive(_55); // scope 36 at $DIR/reference_prop.rs:+71:16: +71:18 + _55 = (); // scope 36 at $DIR/reference_prop.rs:+71:16: +71:18 + _54 = opaque::<()>(move _55) -> bb8; // scope 36 at $DIR/reference_prop.rs:+71:9: +71:19 + // mir::Constant + // + span: $DIR/reference_prop.rs:314:9: 314:15 + // + literal: Const { ty: fn(()) {opaque::<()>}, val: Value(<ZST>) } + } + + bb8: { + StorageDead(_55); // scope 36 at $DIR/reference_prop.rs:+71:18: +71:19 + StorageDead(_54); // scope 36 at $DIR/reference_prop.rs:+71:19: +71:20 + _0 = const (); // scope 34 at $DIR/reference_prop.rs:+67:5: +72:6 + StorageDead(_53); // scope 35 at $DIR/reference_prop.rs:+72:5: +72:6 + StorageDead(_51); // scope 34 at $DIR/reference_prop.rs:+72:5: +72:6 + return; // scope 0 at $DIR/reference_prop.rs:+73:2: +73:2 } } diff --git a/tests/mir-opt/reference_prop.rs b/tests/mir-opt/reference_prop.rs index 5625c20a420..e75f376bb39 100644 --- a/tests/mir-opt/reference_prop.rs +++ b/tests/mir-opt/reference_prop.rs @@ -12,6 +12,7 @@ fn reference_propagation<'a, T: Copy>(single: &'a T, mut multiple: &'a T) { let a = 5_usize; let b = &a; // This borrow is only used once. let c = *b; // This should be optimized. + opaque(()); // We use opaque to separate cases into basic blocks in the MIR. } // Propagation through a two references. @@ -22,6 +23,7 @@ fn reference_propagation<'a, T: Copy>(single: &'a T, mut multiple: &'a T) { b = &a2; // `b` is assigned twice, so we cannot propagate it. let c = *b; + opaque(()); } // Propagation through a borrowed reference. @@ -29,7 +31,8 @@ fn reference_propagation<'a, T: Copy>(single: &'a T, mut multiple: &'a T) { let a = 5_usize; let b = &a; let d = &b; - let c = *b; // `b` is immutably borrowed, we know its value, but cannot be removed. + let c = *b; // `b` is immutably borrowed, we know its value, but do not propagate it + opaque(()); } // Propagation through a borrowed reference. @@ -38,6 +41,7 @@ fn reference_propagation<'a, T: Copy>(single: &'a T, mut multiple: &'a T) { let mut b = &a; let d = &mut b; let c = *b; // `b` is mutably borrowed, we cannot know its value. + opaque(()); } // Propagation through an escaping borrow. @@ -45,7 +49,7 @@ fn reference_propagation<'a, T: Copy>(single: &'a T, mut multiple: &'a T) { let a = 7_usize; let b = &a; let c = *b; - opaque(b); // `b` escapes here, so we can only replace immutable borrow + opaque(b); // `b` escapes here, but we can still replace immutable borrow } // Propagation through a transitively escaping borrow. @@ -65,6 +69,7 @@ fn reference_propagation<'a, T: Copy>(single: &'a T, mut multiple: &'a T) { { let a = &*single; let b = *a; // This should be optimized as `*single`. + opaque(()); } // Propagation a reborrow of a mutated argument. @@ -72,6 +77,7 @@ fn reference_propagation<'a, T: Copy>(single: &'a T, mut multiple: &'a T) { let a = &*multiple; multiple = &*single; let b = *a; // This should not be optimized. + opaque(()); } } @@ -81,6 +87,7 @@ fn reference_propagation_mut<'a, T: Copy>(single: &'a mut T, mut multiple: &'a m let mut a = 5_usize; let b = &mut a; // This borrow is only used once. let c = *b; // This should be optimized. + opaque(()); } // Propagation through a two references. @@ -91,6 +98,7 @@ fn reference_propagation_mut<'a, T: Copy>(single: &'a mut T, mut multiple: &'a m b = &mut a2; // `b` is assigned twice, so we cannot propagate it. let c = *b; + opaque(()); } // Propagation through a borrowed reference. @@ -99,6 +107,7 @@ fn reference_propagation_mut<'a, T: Copy>(single: &'a mut T, mut multiple: &'a m let b = &mut a; let d = &b; let c = *b; // `b` is immutably borrowed, we know its value, but cannot be removed. + opaque(()); } // Propagation through a borrowed reference. @@ -107,6 +116,7 @@ fn reference_propagation_mut<'a, T: Copy>(single: &'a mut T, mut multiple: &'a m let mut b = &mut a; let d = &mut b; let c = *b; // `b` is mutably borrowed, we cannot know its value. + opaque(()); } // Propagation through an escaping borrow. @@ -134,6 +144,7 @@ fn reference_propagation_mut<'a, T: Copy>(single: &'a mut T, mut multiple: &'a m { let a = &mut *single; let b = *a; // This should be optimized as `*single`. + opaque(()); } // Propagation a reborrow of a mutated argument. @@ -141,6 +152,7 @@ fn reference_propagation_mut<'a, T: Copy>(single: &'a mut T, mut multiple: &'a m let a = &mut *multiple; multiple = &mut *single; let b = *a; // This should not be optimized. + opaque(()); } } @@ -150,6 +162,7 @@ fn reference_propagation_const_ptr<T: Copy>(single: *const T, mut multiple: *con let a = 5_usize; let b = &raw const a; // This borrow is only used once. let c = *b; // This should be optimized. + opaque(()); } // Propagation through a two references. @@ -160,6 +173,7 @@ fn reference_propagation_const_ptr<T: Copy>(single: *const T, mut multiple: *con b = &raw const a2; // `b` is assigned twice, so we cannot propagate it. let c = *b; + opaque(()); } // Propagation through a borrowed reference. @@ -168,6 +182,7 @@ fn reference_propagation_const_ptr<T: Copy>(single: *const T, mut multiple: *con let b = &raw const a; let d = &b; let c = *b; // `b` is immutably borrowed, we know its value, but cannot be removed. + opaque(()); } // Propagation through a borrowed reference. @@ -176,6 +191,7 @@ fn reference_propagation_const_ptr<T: Copy>(single: *const T, mut multiple: *con let mut b = &raw const a; let d = &mut b; let c = *b; // `b` is mutably borrowed, we cannot know its value. + opaque(()); } // Propagation through an escaping borrow. @@ -203,6 +219,7 @@ fn reference_propagation_const_ptr<T: Copy>(single: *const T, mut multiple: *con unsafe { let a = &raw const *single; let b = *a; // This should be optimized as `*single`. + opaque(()); } // Propagation a reborrow of a mutated argument. @@ -210,6 +227,7 @@ fn reference_propagation_const_ptr<T: Copy>(single: *const T, mut multiple: *con let a = &raw const *multiple; multiple = &raw const *single; let b = *a; // This should not be optimized. + opaque(()); } // Propagation through a reborrow. @@ -218,6 +236,7 @@ fn reference_propagation_const_ptr<T: Copy>(single: *const T, mut multiple: *con let b = &raw const a; let c = &raw const *b; let e = *c; + opaque(()); } } @@ -227,6 +246,7 @@ fn reference_propagation_mut_ptr<T: Copy>(single: *mut T, mut multiple: *mut T) let mut a = 5_usize; let b = &raw mut a; // This borrow is only used once. let c = *b; // This should be optimized. + opaque(()); } // Propagation through a two references. @@ -237,6 +257,7 @@ fn reference_propagation_mut_ptr<T: Copy>(single: *mut T, mut multiple: *mut T) b = &raw mut a2; // `b` is assigned twice, so we cannot propagate it. let c = *b; + opaque(()); } // Propagation through a borrowed reference. @@ -245,6 +266,7 @@ fn reference_propagation_mut_ptr<T: Copy>(single: *mut T, mut multiple: *mut T) let b = &raw mut a; let d = &b; let c = *b; // `b` is immutably borrowed, we know its value, but cannot be removed. + opaque(()); } // Propagation through a borrowed reference. @@ -253,6 +275,7 @@ fn reference_propagation_mut_ptr<T: Copy>(single: *mut T, mut multiple: *mut T) let mut b = &raw mut a; let d = &mut b; let c = *b; // `b` is mutably borrowed, we cannot know its value. + opaque(()); } // Propagation through an escaping borrow. @@ -280,6 +303,7 @@ fn reference_propagation_mut_ptr<T: Copy>(single: *mut T, mut multiple: *mut T) unsafe { let a = &raw mut *single; let b = *a; // This should be optimized as `*single`. + opaque(()); } // Propagation a reborrow of a mutated argument. @@ -287,6 +311,7 @@ fn reference_propagation_mut_ptr<T: Copy>(single: *mut T, mut multiple: *mut T) let a = &raw mut *multiple; multiple = &raw mut *single; let b = *a; // This should not be optimized. + opaque(()); } } @@ -381,12 +406,14 @@ fn maybe_dead(m: bool) { let b = &mut y; // As we don't replace `b` in `bb2`, we cannot replace it here either. *b = 7; + // But this can still be replaced. + let u = *a; match m { true => bb1, _ => bb2 } } bb1 = { StorageDead(x); StorageDead(y); - Goto(bb2) + Call(RET, bb2, opaque(u)) } bb2 = { // As `x` may be `StorageDead`, `a` may be dangling, so we do nothing. |
