| - // MIR for `nest_copy` before GVN | 
 | + // MIR for `nest_copy` after GVN | 
 |    | 
 |   fn nest_copy(_1: &NestCopy) -> NestCopy { | 
 |       debug v => _1; | 
 |       let mut _0: NestCopy; | 
 |       let _2: i32; | 
 |       let mut _6: i32; | 
 |       let mut _7: u64; | 
 |       let mut _8: [i8; 3]; | 
 |       let mut _10: i32; | 
 |       let mut _11: AllCopy; | 
 |       scope 1 { | 
 |           debug a => _2; | 
 |           let _3: u64; | 
 |           scope 2 { | 
 |               debug b => _3; | 
 |               let _4: [i8; 3]; | 
 |               scope 3 { | 
 |                   debug c => _4; | 
 |                   let _5: AllCopy; | 
 |                   scope 4 { | 
 |                       debug all_copy => _5; | 
 |                       let _9: i32; | 
 |                       scope 5 { | 
 |                           debug d => _9; | 
 |                       } | 
 |                   } | 
 |               } | 
 |           } | 
 |       } | 
 |    | 
 |       bb0: { | 
 | -         StorageLive(_2); | 
 | +         nop; | 
 |           _2 = copy (((*_1).1: AllCopy).0: i32); | 
 | -         StorageLive(_3); | 
 | +         nop; | 
 |           _3 = copy (((*_1).1: AllCopy).1: u64); | 
 | -         StorageLive(_4); | 
 | +         nop; | 
 |           _4 = copy (((*_1).1: AllCopy).2: [i8; 3]); | 
 | -         StorageLive(_5); | 
 | +         nop; | 
 |           StorageLive(_6); | 
 |           _6 = copy _2; | 
 |           StorageLive(_7); | 
 |           _7 = copy _3; | 
 |           StorageLive(_8); | 
 |           _8 = copy _4; | 
 | -         _5 = AllCopy { a: move _6, b: move _7, c: move _8 }; | 
 | +         _5 = copy ((*_1).1: AllCopy); | 
 |           StorageDead(_8); | 
 |           StorageDead(_7); | 
 |           StorageDead(_6); | 
 | -         StorageLive(_9); | 
 | +         nop; | 
 |           _9 = copy ((*_1).0: i32); | 
 |           StorageLive(_10); | 
 |           _10 = copy _9; | 
 |           StorageLive(_11); | 
 | -         _11 = move _5; | 
 | -         _0 = NestCopy { d: move _10, all_copy: move _11 }; | 
 | +         _11 = copy _5; | 
 | +         _0 = copy (*_1); | 
 |           StorageDead(_11); | 
 |           StorageDead(_10); | 
 | -         StorageDead(_9); | 
 | -         StorageDead(_5); | 
 | -         StorageDead(_4); | 
 | -         StorageDead(_3); | 
 | -         StorageDead(_2); | 
 | +         nop; | 
 | +         nop; | 
 | +         nop; | 
 | +         nop; | 
 | +         nop; | 
 |           return; | 
 |       } | 
 |   } | 
 |    |