blob: 8c7d79262b242438cc898d7015ddbdbf3cf3ce62 [file] [log] [blame]
// MIR for `main` after SimplifyCfg-elaborate-drops
fn main() -> () {
let mut _0: (); // return place in scope 0 at $DIR/retag.rs:29:11: 29:11
let mut _1: i32; // in scope 0 at $DIR/retag.rs:30:9: 30:14
let _2: (); // in scope 0 at $DIR/retag.rs:31:5: 37:6
let mut _4: &Test; // in scope 0 at $DIR/retag.rs:32:17: 32:24
let _5: Test; // in scope 0 at $DIR/retag.rs:32:17: 32:24
let mut _6: &mut i32; // in scope 0 at $DIR/retag.rs:32:29: 32:35
let mut _7: &mut i32; // in scope 0 at $DIR/retag.rs:32:29: 32:35
let mut _9: &mut i32; // in scope 0 at $DIR/retag.rs:33:19: 33:20
let mut _12: *mut i32; // in scope 0 at $DIR/retag.rs:36:18: 36:29
let mut _14: [closure@main::{closure#0}]; // in scope 0 at $DIR/retag.rs:40:31: 43:6
let mut _16: for<'r> fn(&'r i32) -> &'r i32; // in scope 0 at $DIR/retag.rs:44:14: 44:15
let mut _17: &i32; // in scope 0 at $DIR/retag.rs:44:16: 44:18
let _18: &i32; // in scope 0 at $DIR/retag.rs:44:16: 44:18
let _19: &i32; // in scope 0 at $DIR/retag.rs:47:5: 47:24
let mut _20: &Test; // in scope 0 at $DIR/retag.rs:47:5: 47:12
let _21: Test; // in scope 0 at $DIR/retag.rs:47:5: 47:12
let mut _22: &i32; // in scope 0 at $DIR/retag.rs:47:21: 47:23
let _23: &i32; // in scope 0 at $DIR/retag.rs:47:21: 47:23
let _24: i32; // in scope 0 at $DIR/retag.rs:47:22: 47:23
let mut _26: *const i32; // in scope 0 at $DIR/retag.rs:50:14: 50:28
scope 1 {
debug x => _1; // in scope 1 at $DIR/retag.rs:30:9: 30:14
let _3: &mut i32; // in scope 1 at $DIR/retag.rs:32:13: 32:14
let _13: for<'r> fn(&'r i32) -> &'r i32; // in scope 1 at $DIR/retag.rs:40:9: 40:10
scope 2 {
debug v => _3; // in scope 2 at $DIR/retag.rs:32:13: 32:14
let _8: &mut i32; // in scope 2 at $DIR/retag.rs:33:13: 33:14
scope 3 {
debug w => _8; // in scope 3 at $DIR/retag.rs:33:13: 33:14
let _10: &mut i32; // in scope 3 at $DIR/retag.rs:34:13: 34:14
scope 4 {
debug w => _10; // in scope 4 at $DIR/retag.rs:34:13: 34:14
let _11: *mut i32; // in scope 4 at $DIR/retag.rs:36:13: 36:15
scope 5 {
debug _w => _11; // in scope 5 at $DIR/retag.rs:36:13: 36:15
}
}
}
}
scope 6 {
debug c => _13; // in scope 6 at $DIR/retag.rs:40:9: 40:10
let _15: &i32; // in scope 6 at $DIR/retag.rs:44:9: 44:11
scope 7 {
debug _w => _15; // in scope 7 at $DIR/retag.rs:44:9: 44:11
let _25: *const i32; // in scope 7 at $DIR/retag.rs:50:9: 50:11
let mut _27: &i32; // in scope 7 at $DIR/retag.rs:47:21: 47:23
scope 8 {
debug _w => _25; // in scope 8 at $DIR/retag.rs:50:9: 50:11
}
}
}
}
bb0: {
StorageLive(_1); // scope 0 at $DIR/retag.rs:30:9: 30:14
_1 = const 0_i32; // scope 0 at $DIR/retag.rs:30:17: 30:18
StorageLive(_2); // scope 1 at $DIR/retag.rs:31:5: 37:6
StorageLive(_3); // scope 1 at $DIR/retag.rs:32:13: 32:14
StorageLive(_4); // scope 1 at $DIR/retag.rs:32:17: 32:24
StorageLive(_5); // scope 1 at $DIR/retag.rs:32:17: 32:24
_5 = Test(const 0_i32); // scope 1 at $DIR/retag.rs:32:17: 32:24
_4 = &_5; // scope 1 at $DIR/retag.rs:32:17: 32:24
Retag(_4); // scope 1 at $DIR/retag.rs:32:17: 32:24
StorageLive(_6); // scope 1 at $DIR/retag.rs:32:29: 32:35
StorageLive(_7); // scope 1 at $DIR/retag.rs:32:29: 32:35
_7 = &mut _1; // scope 1 at $DIR/retag.rs:32:29: 32:35
Retag(_7); // scope 1 at $DIR/retag.rs:32:29: 32:35
_6 = &mut (*_7); // scope 1 at $DIR/retag.rs:32:29: 32:35
Retag([2phase] _6); // scope 1 at $DIR/retag.rs:32:29: 32:35
_3 = Test::foo(move _4, move _6) -> [return: bb1, unwind: bb7]; // scope 1 at $DIR/retag.rs:32:17: 32:36
// mir::Constant
// + span: $DIR/retag.rs:32:25: 32:28
// + literal: Const { ty: for<'r, 'x> fn(&'r Test, &'x mut i32) -> &'x mut i32 {Test::foo}, val: Value(Scalar(<ZST>)) }
}
bb1: {
Retag(_3); // scope 1 at $DIR/retag.rs:32:17: 32:36
StorageDead(_6); // scope 1 at $DIR/retag.rs:32:35: 32:36
StorageDead(_4); // scope 1 at $DIR/retag.rs:32:35: 32:36
StorageDead(_7); // scope 1 at $DIR/retag.rs:32:36: 32:37
drop(_5) -> [return: bb2, unwind: bb8]; // scope 1 at $DIR/retag.rs:32:36: 32:37
}
bb2: {
StorageDead(_5); // scope 1 at $DIR/retag.rs:32:36: 32:37
StorageLive(_8); // scope 2 at $DIR/retag.rs:33:13: 33:14
StorageLive(_9); // scope 2 at $DIR/retag.rs:33:19: 33:20
_9 = move _3; // scope 2 at $DIR/retag.rs:33:19: 33:20
Retag(_9); // scope 2 at $DIR/retag.rs:33:19: 33:20
_8 = &mut (*_9); // scope 2 at $DIR/retag.rs:33:19: 33:20
Retag(_8); // scope 2 at $DIR/retag.rs:33:19: 33:20
StorageDead(_9); // scope 2 at $DIR/retag.rs:33:22: 33:23
StorageLive(_10); // scope 3 at $DIR/retag.rs:34:13: 34:14
_10 = move _8; // scope 3 at $DIR/retag.rs:34:17: 34:18
Retag(_10); // scope 3 at $DIR/retag.rs:34:17: 34:18
StorageLive(_11); // scope 4 at $DIR/retag.rs:36:13: 36:15
StorageLive(_12); // scope 4 at $DIR/retag.rs:36:18: 36:29
_12 = &raw mut (*_10); // scope 4 at $DIR/retag.rs:36:18: 36:19
Retag([raw] _12); // scope 4 at $DIR/retag.rs:36:18: 36:19
_11 = _12; // scope 4 at $DIR/retag.rs:36:18: 36:29
StorageDead(_12); // scope 4 at $DIR/retag.rs:36:29: 36:30
_2 = const (); // scope 1 at $DIR/retag.rs:31:5: 37:6
StorageDead(_11); // scope 4 at $DIR/retag.rs:37:5: 37:6
StorageDead(_10); // scope 3 at $DIR/retag.rs:37:5: 37:6
StorageDead(_8); // scope 2 at $DIR/retag.rs:37:5: 37:6
StorageDead(_3); // scope 1 at $DIR/retag.rs:37:5: 37:6
StorageDead(_2); // scope 1 at $DIR/retag.rs:37:5: 37:6
StorageLive(_13); // scope 1 at $DIR/retag.rs:40:9: 40:10
StorageLive(_14); // scope 1 at $DIR/retag.rs:40:31: 43:6
_14 = [closure@main::{closure#0}]; // scope 1 at $DIR/retag.rs:40:31: 43:6
// closure
// + def_id: DefId(0:14 ~ retag[317d]::main::{closure#0})
// + substs: [
// i8,
// for<'r> extern "rust-call" fn((&'r i32,)) -> &'r i32,
// (),
// ]
Retag(_14); // scope 1 at $DIR/retag.rs:40:31: 43:6
_13 = move _14 as for<'r> fn(&'r i32) -> &'r i32 (Pointer(ClosureFnPointer(Normal))); // scope 1 at $DIR/retag.rs:40:31: 43:6
StorageDead(_14); // scope 1 at $DIR/retag.rs:43:5: 43:6
StorageLive(_15); // scope 6 at $DIR/retag.rs:44:9: 44:11
StorageLive(_16); // scope 6 at $DIR/retag.rs:44:14: 44:15
_16 = _13; // scope 6 at $DIR/retag.rs:44:14: 44:15
StorageLive(_17); // scope 6 at $DIR/retag.rs:44:16: 44:18
StorageLive(_18); // scope 6 at $DIR/retag.rs:44:16: 44:18
_18 = &_1; // scope 6 at $DIR/retag.rs:44:16: 44:18
Retag(_18); // scope 6 at $DIR/retag.rs:44:16: 44:18
_17 = &(*_18); // scope 6 at $DIR/retag.rs:44:16: 44:18
Retag(_17); // scope 6 at $DIR/retag.rs:44:16: 44:18
_15 = move _16(move _17) -> bb3; // scope 6 at $DIR/retag.rs:44:14: 44:19
}
bb3: {
Retag(_15); // scope 6 at $DIR/retag.rs:44:14: 44:19
StorageDead(_17); // scope 6 at $DIR/retag.rs:44:18: 44:19
StorageDead(_16); // scope 6 at $DIR/retag.rs:44:18: 44:19
StorageDead(_18); // scope 6 at $DIR/retag.rs:44:19: 44:20
StorageLive(_19); // scope 7 at $DIR/retag.rs:47:5: 47:24
StorageLive(_20); // scope 7 at $DIR/retag.rs:47:5: 47:12
StorageLive(_21); // scope 7 at $DIR/retag.rs:47:5: 47:12
_21 = Test(const 0_i32); // scope 7 at $DIR/retag.rs:47:5: 47:12
_20 = &_21; // scope 7 at $DIR/retag.rs:47:5: 47:12
Retag(_20); // scope 7 at $DIR/retag.rs:47:5: 47:12
StorageLive(_22); // scope 7 at $DIR/retag.rs:47:21: 47:23
StorageLive(_23); // scope 7 at $DIR/retag.rs:47:21: 47:23
_27 = const main::promoted[0]; // scope 7 at $DIR/retag.rs:47:21: 47:23
// ty::Const
// + ty: &i32
// + val: Unevaluated(WithOptConstParam { did: DefId(0:13 ~ retag[317d]::main), const_param_did: None }, [], Some(promoted[0]))
// mir::Constant
// + span: $DIR/retag.rs:47:21: 47:23
// + literal: Const { ty: &i32, val: Unevaluated(WithOptConstParam { did: DefId(0:13 ~ retag[317d]::main), const_param_did: None }, [], Some(promoted[0])) }
Retag(_27); // scope 7 at $DIR/retag.rs:47:21: 47:23
_23 = &(*_27); // scope 7 at $DIR/retag.rs:47:21: 47:23
Retag(_23); // scope 7 at $DIR/retag.rs:47:21: 47:23
_22 = &(*_23); // scope 7 at $DIR/retag.rs:47:21: 47:23
Retag(_22); // scope 7 at $DIR/retag.rs:47:21: 47:23
_19 = Test::foo_shr(move _20, move _22) -> [return: bb4, unwind: bb6]; // scope 7 at $DIR/retag.rs:47:5: 47:24
// mir::Constant
// + span: $DIR/retag.rs:47:13: 47:20
// + literal: Const { ty: for<'r, 'x> fn(&'r Test, &'x i32) -> &'x i32 {Test::foo_shr}, val: Value(Scalar(<ZST>)) }
}
bb4: {
Retag(_19); // scope 7 at $DIR/retag.rs:47:5: 47:24
StorageDead(_22); // scope 7 at $DIR/retag.rs:47:23: 47:24
StorageDead(_20); // scope 7 at $DIR/retag.rs:47:23: 47:24
StorageDead(_23); // scope 7 at $DIR/retag.rs:47:24: 47:25
drop(_21) -> [return: bb5, unwind: bb8]; // scope 7 at $DIR/retag.rs:47:24: 47:25
}
bb5: {
StorageDead(_21); // scope 7 at $DIR/retag.rs:47:24: 47:25
StorageDead(_19); // scope 7 at $DIR/retag.rs:47:24: 47:25
StorageLive(_25); // scope 7 at $DIR/retag.rs:50:9: 50:11
StorageLive(_26); // scope 7 at $DIR/retag.rs:50:14: 50:28
_26 = &raw const (*_15); // scope 7 at $DIR/retag.rs:50:14: 50:16
Retag([raw] _26); // scope 7 at $DIR/retag.rs:50:14: 50:16
_25 = _26; // scope 7 at $DIR/retag.rs:50:14: 50:28
StorageDead(_26); // scope 7 at $DIR/retag.rs:50:28: 50:29
_0 = const (); // scope 0 at $DIR/retag.rs:29:11: 51:2
StorageDead(_25); // scope 7 at $DIR/retag.rs:51:1: 51:2
StorageDead(_15); // scope 6 at $DIR/retag.rs:51:1: 51:2
StorageDead(_13); // scope 1 at $DIR/retag.rs:51:1: 51:2
StorageDead(_1); // scope 0 at $DIR/retag.rs:51:1: 51:2
return; // scope 0 at $DIR/retag.rs:51:2: 51:2
}
bb6 (cleanup): {
drop(_21) -> bb8; // scope 7 at $DIR/retag.rs:47:24: 47:25
}
bb7 (cleanup): {
drop(_5) -> bb8; // scope 1 at $DIR/retag.rs:32:36: 32:37
}
bb8 (cleanup): {
resume; // scope 0 at $DIR/retag.rs:29:1: 51:2
}
}