| - // MIR for `main` before Derefer | |
| + // MIR for `main` after Derefer | |
| fn main() -> () { | |
| let mut _0: (); | |
| let mut _1: std::slice::Iter<'_, i32>; | |
| let mut _2: &[i32; 2]; | |
| let _3: [i32; 2]; | |
| let mut _4: std::slice::Iter<'_, i32>; | |
| let mut _5: (); | |
| let _6: (); | |
| let mut _7: std::option::Option<&i32>; | |
| let mut _8: &mut std::slice::Iter<'_, i32>; | |
| let mut _9: &mut std::slice::Iter<'_, i32>; | |
| let mut _10: isize; | |
| let mut _11: !; | |
| let mut _13: i32; | |
| let mut _14: &[i32; 2]; | |
| + let mut _15: &i32; | |
| scope 1 { | |
| debug iter => _4; | |
| let _12: i32; | |
| scope 2 { | |
| debug foo => _12; | |
| } | |
| } | |
| bb0: { | |
| StorageLive(_1); | |
| StorageLive(_2); | |
| _14 = const main::promoted[0]; | |
| _2 = &(*_14); | |
| _1 = <&[i32; 2] as IntoIterator>::into_iter(move _2) -> [return: bb1, unwind continue]; | |
| } | |
| bb1: { | |
| StorageDead(_2); | |
| PlaceMention(_1); | |
| StorageLive(_4); | |
| _4 = move _1; | |
| goto -> bb2; | |
| } | |
| bb2: { | |
| StorageLive(_6); | |
| StorageLive(_7); | |
| StorageLive(_8); | |
| StorageLive(_9); | |
| _9 = &mut _4; | |
| _8 = &mut (*_9); | |
| _7 = <std::slice::Iter<'_, i32> as Iterator>::next(move _8) -> [return: bb3, unwind continue]; | |
| } | |
| bb3: { | |
| StorageDead(_8); | |
| PlaceMention(_7); | |
| _10 = discriminant(_7); | |
| switchInt(move _10) -> [0: bb6, 1: bb5, otherwise: bb4]; | |
| } | |
| bb4: { | |
| unreachable; | |
| } | |
| bb5: { | |
| StorageLive(_12); | |
| - _12 = copy (*((_7 as Some).0: &i32)); | |
| + _15 = deref_copy ((_7 as Some).0: &i32); | |
| + _12 = copy (*_15); | |
| StorageLive(_13); | |
| _13 = copy _12; | |
| _6 = std::mem::drop::<i32>(move _13) -> [return: bb7, unwind continue]; | |
| } | |
| bb6: { | |
| _0 = const (); | |
| StorageDead(_9); | |
| StorageDead(_7); | |
| StorageDead(_6); | |
| StorageDead(_4); | |
| StorageDead(_1); | |
| return; | |
| } | |
| bb7: { | |
| StorageDead(_13); | |
| StorageDead(_12); | |
| StorageDead(_9); | |
| StorageDead(_7); | |
| StorageDead(_6); | |
| _5 = const (); | |
| goto -> bb2; | |
| } | |
| } | |