// MIR for `enum_clone_as_copy` after PreCodegen fn enum_clone_as_copy(_1: &Enum1) -> Enum1 { debug v => _1; let mut _0: Enum1; scope 1 (inlined ::clone) { debug self => _1; let mut _2: isize; let mut _3: &AllCopy; let mut _4: &NestCopy; scope 2 { debug __self_0 => _3; scope 6 (inlined ::clone) { debug self => _3; } } scope 3 { debug __self_0 => _4; scope 4 (inlined ::clone) { debug self => _4; let _5: &AllCopy; scope 5 (inlined ::clone) { debug self => _5; } } } } bb0: { StorageLive(_2); StorageLive(_3); StorageLive(_4); _2 = discriminant((*_1)); switchInt(move _2) -> [0: bb1, 1: bb2, otherwise: bb4]; } bb1: { _3 = &(((*_1) as A).0: AllCopy); _0 = copy (*_1); goto -> bb3; } bb2: { _4 = &(((*_1) as B).0: NestCopy); StorageLive(_5); _5 = &((((*_1) as B).0: NestCopy).1: AllCopy); StorageDead(_5); _0 = copy (*_1); goto -> bb3; } bb3: { StorageDead(_4); StorageDead(_3); StorageDead(_2); return; } bb4: { unreachable; } }