- // MIR for `ref_copies` before ScalarReplacementOfAggregates + // MIR for `ref_copies` after ScalarReplacementOfAggregates fn ref_copies(_1: &Foo) -> () { debug x => _1; let mut _0: (); let _2: Foo; + let _5: u8; + let _6: (); + let _7: &str; + let _8: std::option::Option; scope 1 { - debug y => _2; + debug ((y: Foo).0: u8) => _5; + debug ((y: Foo).1: ()) => _6; + debug ((y: Foo).2: &str) => _7; + debug ((y: Foo).3: std::option::Option) => _8; let _3: u8; scope 2 { debug t => _3; let _4: &str; scope 3 { debug u => _4; } } } bb0: { - StorageLive(_2); - _2 = copy (*_1); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + StorageLive(_8); + nop; + _5 = copy ((*_1).0: u8); + _6 = copy ((*_1).1: ()); + _7 = copy ((*_1).2: &str); + _8 = copy ((*_1).3: std::option::Option); + nop; StorageLive(_3); - _3 = copy (_2.0: u8); + _3 = copy _5; StorageLive(_4); - _4 = copy (_2.2: &str); + _4 = copy _7; _0 = const (); StorageDead(_4); StorageDead(_3); - StorageDead(_2); + StorageDead(_5); + StorageDead(_6); + StorageDead(_7); + StorageDead(_8); + nop; return; } }