- // MIR for `main` before Derefer + // MIR for `main` after Derefer fn main() -> () { let mut _0: (); let mut _1: (i32, i32); let mut _3: &mut (i32, i32); + let mut _6: &mut (i32, i32); + let mut _7: &mut (i32, i32); scope 1 { debug a => _1; let mut _2: (i32, &mut (i32, i32)); scope 2 { debug b => _2; let _4: &mut i32; scope 3 { debug x => _4; let _5: &mut i32; scope 4 { debug y => _5; } } } } bb0: { StorageLive(_1); _1 = (const 42_i32, const 43_i32); StorageLive(_2); StorageLive(_3); _3 = &mut _1; _2 = (const 99_i32, move _3); StorageDead(_3); StorageLive(_4); - _4 = &mut ((*(_2.1: &mut (i32, i32))).0: i32); + _6 = deref_copy (_2.1: &mut (i32, i32)); + _4 = &mut ((*_6).0: i32); StorageLive(_5); - _5 = &mut ((*(_2.1: &mut (i32, i32))).1: i32); + _7 = deref_copy (_2.1: &mut (i32, i32)); + _5 = &mut ((*_7).1: i32); _0 = const (); StorageDead(_5); StorageDead(_4); StorageDead(_2); StorageDead(_1); return; } }