| - // MIR for `debuginfo` before ReferencePropagation | |
| + // MIR for `debuginfo` after ReferencePropagation | |
| fn debuginfo() -> () { | |
| let mut _0: (); | |
| let _1: &mut u8; | |
| let mut _2: u8; | |
| let _4: debuginfo::T; | |
| let _6: (); | |
| let mut _7: std::option::Option<i32>; | |
| let mut _8: isize; | |
| let _10: (); | |
| let mut _11: &[i32]; | |
| let _12: &[i32]; | |
| let mut _13: &[i32; 10]; | |
| let _14: [i32; 10]; | |
| let mut _15: std::ops::RangeFull; | |
| let mut _16: usize; | |
| let mut _17: usize; | |
| let mut _18: usize; | |
| let mut _19: bool; | |
| let _24: &&mut u8; | |
| let _25: &mut u8; | |
| let mut _26: debuginfo::T; | |
| scope 1 { | |
| debug ref_mut_u8 => _1; | |
| let _3: &u8; | |
| let mut _29: &debuginfo::T; | |
| scope 2 { | |
| debug field => _3; | |
| let _5: &u8; | |
| scope 3 { | |
| - debug reborrow => _5; | |
| + debug reborrow => _1; | |
| let _9: &i32; | |
| let _23: &&&mut u8; | |
| let mut _28: &std::option::Option<i32>; | |
| scope 4 { | |
| debug variant_field => _9; | |
| } | |
| scope 5 { | |
| debug constant_index => _20; | |
| debug subslice => _21; | |
| debug constant_index_from_end => _22; | |
| let _20: &i32; | |
| let _21: &[i32]; | |
| let _22: &i32; | |
| let mut _27: &[i32; 10]; | |
| } | |
| scope 6 { | |
| debug multiple_borrow => _23; | |
| } | |
| } | |
| } | |
| } | |
| bb0: { | |
| StorageLive(_1); | |
| StorageLive(_2); | |
| _2 = const 5_u8; | |
| _1 = &mut _2; | |
| StorageLive(_3); | |
| _29 = const debuginfo::promoted[2]; | |
| _3 = &((*_29).0: u8); | |
| - StorageLive(_5); | |
| - _5 = &(*_1); | |
| - StorageLive(_6); | |
| StorageLive(_7); | |
| _7 = Option::<i32>::Some(const 0_i32); | |
| _8 = discriminant(_7); | |
| switchInt(move _8) -> [0: bb3, 1: bb2, otherwise: bb1]; | |
| } | |
| bb1: { | |
| unreachable; | |
| } | |
| bb2: { | |
| StorageLive(_9); | |
| _28 = const debuginfo::promoted[1]; | |
| _9 = &(((*_28) as Some).0: i32); | |
| - _6 = const (); | |
| StorageDead(_9); | |
| goto -> bb4; | |
| } | |
| bb3: { | |
| - _6 = const (); | |
| goto -> bb4; | |
| } | |
| bb4: { | |
| StorageDead(_7); | |
| - StorageDead(_6); | |
| - StorageLive(_10); | |
| StorageLive(_11); | |
| - StorageLive(_12); | |
| StorageLive(_13); | |
| _27 = const debuginfo::promoted[0]; | |
| _13 = &(*_27); | |
| StorageLive(_15); | |
| _15 = RangeFull; | |
| - _12 = <[i32; 10] as Index<RangeFull>>::index(move _13, move _15) -> [return: bb5, unwind continue]; | |
| + _12 = <[i32; 10] as Index<RangeFull>>::index(copy _13, move _15) -> [return: bb5, unwind continue]; | |
| } | |
| bb5: { | |
| StorageDead(_15); | |
| StorageDead(_13); | |
| _11 = &(*_12); | |
| _17 = PtrMetadata(copy _11); | |
| _16 = move _17; | |
| _18 = const 3_usize; | |
| _19 = Ge(move _16, move _18); | |
| switchInt(move _19) -> [0: bb7, otherwise: bb6]; | |
| } | |
| bb6: { | |
| StorageLive(_20); | |
| - _20 = &(*_11)[1 of 3]; | |
| + _20 = &(*_12)[1 of 3]; | |
| StorageLive(_21); | |
| - _21 = &(*_11)[2:-1]; | |
| + _21 = &(*_12)[2:-1]; | |
| StorageLive(_22); | |
| - _22 = &(*_11)[-1 of 3]; | |
| - _10 = const (); | |
| + _22 = &(*_12)[-1 of 3]; | |
| StorageDead(_22); | |
| StorageDead(_21); | |
| StorageDead(_20); | |
| goto -> bb8; | |
| } | |
| bb7: { | |
| - _10 = const (); | |
| goto -> bb8; | |
| } | |
| bb8: { | |
| - StorageDead(_12); | |
| StorageDead(_11); | |
| - StorageDead(_10); | |
| StorageLive(_23); | |
| StorageLive(_24); | |
| StorageLive(_25); | |
| StorageLive(_26); | |
| _26 = T(const 6_u8); | |
| _25 = &mut (_26.0: u8); | |
| _24 = &_25; | |
| _23 = &_24; | |
| _0 = const (); | |
| StorageDead(_26); | |
| StorageDead(_25); | |
| StorageDead(_24); | |
| StorageDead(_23); | |
| - StorageDead(_5); | |
| StorageDead(_3); | |
| StorageDead(_2); | |
| StorageDead(_1); | |
| return; | |
| } | |
| } | |