215 lines
16 KiB
Diff
215 lines
16 KiB
Diff
- // MIR for `foo` before ScalarReplacementOfAggregates
|
|
+ // MIR for `foo` after ScalarReplacementOfAggregates
|
|
|
|
fn foo() -> () {
|
|
let mut _0: (); // return place in scope 0 at $DIR/lifetimes.rs:+0:18: +0:18
|
|
let _1: Foo<T>; // in scope 0 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
let mut _2: std::result::Result<std::boxed::Box<dyn std::fmt::Display>, <T as Err>::Err>; // in scope 0 at $DIR/lifetimes.rs:+2:12: +2:31
|
|
let mut _3: std::boxed::Box<dyn std::fmt::Display>; // in scope 0 at $DIR/lifetimes.rs:+2:15: +2:30
|
|
let mut _4: std::boxed::Box<u32>; // in scope 0 at $DIR/lifetimes.rs:+2:15: +2:30
|
|
let mut _7: isize; // in scope 0 at $DIR/lifetimes.rs:+9:12: +9:17
|
|
let _9: (); // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
let _10: (); // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
let mut _11: std::fmt::Arguments<'_>; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
let mut _12: &[&str]; // in scope 0 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
let mut _13: &[&str; 3]; // in scope 0 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
let _14: &[&str; 3]; // in scope 0 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
let _15: [&str; 3]; // in scope 0 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
let mut _16: &[core::fmt::rt::Argument<'_>]; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
let mut _17: &[core::fmt::rt::Argument<'_>; 2]; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
let _18: &[core::fmt::rt::Argument<'_>; 2]; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
let _19: [core::fmt::rt::Argument<'_>; 2]; // in scope 0 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
let mut _20: core::fmt::rt::Argument<'_>; // in scope 0 at $DIR/lifetimes.rs:+10:20: +10:23
|
|
let mut _21: &std::boxed::Box<dyn std::fmt::Display>; // in scope 0 at $DIR/lifetimes.rs:+10:20: +10:23
|
|
let _22: &std::boxed::Box<dyn std::fmt::Display>; // in scope 0 at $DIR/lifetimes.rs:+10:20: +10:23
|
|
let mut _23: core::fmt::rt::Argument<'_>; // in scope 0 at $DIR/lifetimes.rs:+10:24: +10:27
|
|
let mut _24: &u32; // in scope 0 at $DIR/lifetimes.rs:+10:24: +10:27
|
|
let _25: &u32; // in scope 0 at $DIR/lifetimes.rs:+10:24: +10:27
|
|
let mut _27: bool; // in scope 0 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
let mut _28: isize; // in scope 0 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
let mut _29: isize; // in scope 0 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
let mut _30: isize; // in scope 0 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
+ let _31: std::result::Result<std::boxed::Box<dyn std::fmt::Display>, <T as Err>::Err>; // in scope 0 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
+ let _32: u32; // in scope 0 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
scope 1 {
|
|
- debug foo => _1; // in scope 1 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
+ debug foo => Foo<T>{ .0 => _31, .1 => _32, }; // in scope 1 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
let _5: std::result::Result<std::boxed::Box<dyn std::fmt::Display>, <T as Err>::Err>; // in scope 1 at $DIR/lifetimes.rs:+6:9: +6:10
|
|
scope 2 {
|
|
debug x => _5; // in scope 2 at $DIR/lifetimes.rs:+6:9: +6:10
|
|
let _6: u32; // in scope 2 at $DIR/lifetimes.rs:+7:9: +7:10
|
|
scope 3 {
|
|
debug y => _6; // in scope 3 at $DIR/lifetimes.rs:+7:9: +7:10
|
|
scope 4 {
|
|
debug x => _8; // in scope 4 at $DIR/lifetimes.rs:+9:15: +9:16
|
|
let _8: std::boxed::Box<dyn std::fmt::Display>; // in scope 4 at $DIR/lifetimes.rs:+9:15: +9:16
|
|
let mut _26: &[&str; 3]; // in scope 4 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bb0: {
|
|
_27 = const false; // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
- StorageLive(_1); // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
+ StorageLive(_31); // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
+ StorageLive(_32); // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
+ nop; // scope 0 at $DIR/lifetimes.rs:+1:9: +1:12
|
|
StorageLive(_2); // scope 0 at $DIR/lifetimes.rs:+2:12: +2:31
|
|
StorageLive(_3); // scope 0 at $DIR/lifetimes.rs:+2:15: +2:30
|
|
StorageLive(_4); // scope 0 at $DIR/lifetimes.rs:+2:15: +2:30
|
|
_4 = Box::<u32>::new(const 5_u32) -> [return: bb1, unwind unreachable]; // scope 0 at $DIR/lifetimes.rs:+2:15: +2:30
|
|
// mir::Constant
|
|
// + span: $DIR/lifetimes.rs:19:15: 19:23
|
|
// + user_ty: UserType(1)
|
|
// + literal: Const { ty: fn(u32) -> Box<u32> {Box::<u32>::new}, val: Value(<ZST>) }
|
|
}
|
|
|
|
bb1: {
|
|
_3 = move _4 as std::boxed::Box<dyn std::fmt::Display> (Pointer(Unsize)); // scope 0 at $DIR/lifetimes.rs:+2:15: +2:30
|
|
StorageDead(_4); // scope 0 at $DIR/lifetimes.rs:+2:29: +2:30
|
|
_2 = Result::<Box<dyn std::fmt::Display>, <T as Err>::Err>::Ok(move _3); // scope 0 at $DIR/lifetimes.rs:+2:12: +2:31
|
|
StorageDead(_3); // scope 0 at $DIR/lifetimes.rs:+2:30: +2:31
|
|
- _1 = Foo::<T> { x: move _2, y: const 7_u32 }; // scope 0 at $DIR/lifetimes.rs:+1:23: +4:6
|
|
+ _31 = move _2; // scope 0 at $DIR/lifetimes.rs:+1:23: +4:6
|
|
+ _32 = const 7_u32; // scope 0 at $DIR/lifetimes.rs:+1:23: +4:6
|
|
+ nop; // scope 0 at $DIR/lifetimes.rs:+1:23: +4:6
|
|
StorageDead(_2); // scope 0 at $DIR/lifetimes.rs:+4:5: +4:6
|
|
StorageLive(_5); // scope 1 at $DIR/lifetimes.rs:+6:9: +6:10
|
|
_27 = const true; // scope 1 at $DIR/lifetimes.rs:+6:13: +6:18
|
|
- _5 = move (_1.0: std::result::Result<std::boxed::Box<dyn std::fmt::Display>, <T as Err>::Err>); // scope 1 at $DIR/lifetimes.rs:+6:13: +6:18
|
|
+ _5 = move _31; // scope 1 at $DIR/lifetimes.rs:+6:13: +6:18
|
|
StorageLive(_6); // scope 2 at $DIR/lifetimes.rs:+7:9: +7:10
|
|
- _6 = (_1.1: u32); // scope 2 at $DIR/lifetimes.rs:+7:13: +7:18
|
|
+ _6 = _32; // scope 2 at $DIR/lifetimes.rs:+7:13: +7:18
|
|
_7 = discriminant(_5); // scope 4 at $DIR/lifetimes.rs:+9:12: +9:17
|
|
switchInt(move _7) -> [0: bb2, otherwise: bb7]; // scope 4 at $DIR/lifetimes.rs:+9:12: +9:17
|
|
}
|
|
|
|
bb2: {
|
|
StorageLive(_8); // scope 4 at $DIR/lifetimes.rs:+9:15: +9:16
|
|
_27 = const false; // scope 4 at $DIR/lifetimes.rs:+9:15: +9:16
|
|
_8 = move ((_5 as Ok).0: std::boxed::Box<dyn std::fmt::Display>); // scope 4 at $DIR/lifetimes.rs:+9:15: +9:16
|
|
StorageLive(_9); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageLive(_10); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageLive(_11); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageLive(_12); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
StorageLive(_13); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
StorageLive(_14); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
_26 = const _; // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
// mir::Constant
|
|
// + span: $DIR/lifetimes.rs:27:19: 27:28
|
|
// + literal: Const { ty: &[&str; 3], val: Unevaluated(foo, [T], Some(promoted[0])) }
|
|
_14 = &(*_26); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
_13 = &(*_14); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
_12 = move _13 as &[&str] (Pointer(Unsize)); // scope 4 at $DIR/lifetimes.rs:+10:19: +10:28
|
|
StorageDead(_13); // scope 4 at $DIR/lifetimes.rs:+10:27: +10:28
|
|
StorageLive(_16); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageLive(_17); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageLive(_18); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageLive(_19); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageLive(_20); // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23
|
|
StorageLive(_21); // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23
|
|
StorageLive(_22); // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23
|
|
_22 = &_8; // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23
|
|
_21 = &(*_22); // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23
|
|
_20 = core::fmt::rt::Argument::<'_>::new_display::<Box<dyn std::fmt::Display>>(move _21) -> [return: bb3, unwind unreachable]; // scope 4 at $DIR/lifetimes.rs:+10:20: +10:23
|
|
// mir::Constant
|
|
// + span: $DIR/lifetimes.rs:27:20: 27:23
|
|
// + user_ty: UserType(4)
|
|
// + literal: Const { ty: for<'b> fn(&'b Box<dyn std::fmt::Display>) -> core::fmt::rt::Argument<'b> {core::fmt::rt::Argument::<'_>::new_display::<Box<dyn std::fmt::Display>>}, val: Value(<ZST>) }
|
|
}
|
|
|
|
bb3: {
|
|
StorageDead(_21); // scope 4 at $DIR/lifetimes.rs:+10:22: +10:23
|
|
StorageLive(_23); // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27
|
|
StorageLive(_24); // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27
|
|
StorageLive(_25); // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27
|
|
_25 = &_6; // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27
|
|
_24 = &(*_25); // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27
|
|
_23 = core::fmt::rt::Argument::<'_>::new_display::<u32>(move _24) -> [return: bb4, unwind unreachable]; // scope 4 at $DIR/lifetimes.rs:+10:24: +10:27
|
|
// mir::Constant
|
|
// + span: $DIR/lifetimes.rs:27:24: 27:27
|
|
// + user_ty: UserType(5)
|
|
// + literal: Const { ty: for<'b> fn(&'b u32) -> core::fmt::rt::Argument<'b> {core::fmt::rt::Argument::<'_>::new_display::<u32>}, val: Value(<ZST>) }
|
|
}
|
|
|
|
bb4: {
|
|
StorageDead(_24); // scope 4 at $DIR/lifetimes.rs:+10:26: +10:27
|
|
_19 = [move _20, move _23]; // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_23); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_20); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
_18 = &_19; // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
_17 = &(*_18); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
_16 = move _17 as &[core::fmt::rt::Argument<'_>] (Pointer(Unsize)); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_17); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
_11 = Arguments::<'_>::new_v1(move _12, move _16) -> [return: bb5, unwind unreachable]; // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
// mir::Constant
|
|
// + span: $SRC_DIR/std/src/macros.rs:LL:COL
|
|
// + user_ty: UserType(3)
|
|
// + literal: Const { ty: fn(&[&'static str], &[core::fmt::rt::Argument<'_>]) -> Arguments<'_> {Arguments::<'_>::new_v1}, val: Value(<ZST>) }
|
|
}
|
|
|
|
bb5: {
|
|
StorageDead(_16); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_12); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
_10 = _eprint(move _11) -> [return: bb6, unwind unreachable]; // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
// mir::Constant
|
|
// + span: $SRC_DIR/std/src/macros.rs:LL:COL
|
|
// + literal: Const { ty: for<'a> fn(Arguments<'a>) {_eprint}, val: Value(<ZST>) }
|
|
}
|
|
|
|
bb6: {
|
|
StorageDead(_11); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_25); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_22); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_19); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_18); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_14); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_10); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
_9 = const (); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
StorageDead(_9); // scope 4 at $SRC_DIR/std/src/macros.rs:LL:COL
|
|
_0 = const (); // scope 4 at $DIR/lifetimes.rs:+9:22: +11:6
|
|
drop(_8) -> [return: bb8, unwind unreachable]; // scope 3 at $DIR/lifetimes.rs:+11:5: +11:6
|
|
}
|
|
|
|
bb7: {
|
|
_0 = const (); // scope 3 at $DIR/lifetimes.rs:+11:6: +11:6
|
|
goto -> bb9; // scope 3 at $DIR/lifetimes.rs:+9:5: +11:6
|
|
}
|
|
|
|
bb8: {
|
|
StorageDead(_8); // scope 3 at $DIR/lifetimes.rs:+11:5: +11:6
|
|
goto -> bb9; // scope 3 at $DIR/lifetimes.rs:+9:5: +11:6
|
|
}
|
|
|
|
bb9: {
|
|
StorageDead(_6); // scope 2 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
_28 = discriminant(_5); // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
switchInt(move _28) -> [0: bb11, otherwise: bb13]; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
}
|
|
|
|
bb10: {
|
|
_27 = const false; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
StorageDead(_5); // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
- StorageDead(_1); // scope 0 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
+ StorageDead(_31); // scope 0 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
+ StorageDead(_32); // scope 0 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
+ nop; // scope 0 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
return; // scope 0 at $DIR/lifetimes.rs:+12:2: +12:2
|
|
}
|
|
|
|
bb11: {
|
|
switchInt(_27) -> [0: bb10, otherwise: bb12]; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
}
|
|
|
|
bb12: {
|
|
drop(((_5 as Ok).0: std::boxed::Box<dyn std::fmt::Display>)) -> [return: bb10, unwind unreachable]; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
}
|
|
|
|
bb13: {
|
|
drop(_5) -> [return: bb10, unwind unreachable]; // scope 1 at $DIR/lifetimes.rs:+12:1: +12:2
|
|
}
|
|
}
|
|
|