- // MIR for `main` before ElaborateDrops + // MIR for `main` after ElaborateDrops fn main() -> () { let mut _0: (); let _1: bool; let mut _3: bool; let mut _6: std::option::Option>; scope 1 { debug nodrop_x => _1; let _2: bool; scope 2 { debug nodrop_y => _2; let _4: std::option::Option>; scope 3 { debug drop_x => _4; let _5: std::option::Option>; scope 4 { debug drop_y => _5; } } } } bb0: { StorageLive(_1); _1 = const false; StorageLive(_2); StorageLive(_3); _3 = _1; _2 = move _3; StorageDead(_3); StorageLive(_4); _4 = Option::>::None; StorageLive(_5); StorageLive(_6); _6 = move _4; - drop(_5) -> [return: bb1, unwind: bb2]; + goto -> bb1; } bb1: { _5 = move _6; - drop(_6) -> [return: bb3, unwind: bb6]; + goto -> bb3; } bb2 (cleanup): { _5 = move _6; - drop(_6) -> [return: bb6, unwind terminate (panic in a destructor during cleanup)]; + goto -> bb6; } bb3: { StorageDead(_6); _0 = const (); drop(_5) -> [return: bb4, unwind: bb7]; } bb4: { StorageDead(_5); - drop(_4) -> [return: bb5, unwind continue]; + goto -> bb5; } bb5: { StorageDead(_4); StorageDead(_2); StorageDead(_1); return; } bb6 (cleanup): { - drop(_5) -> [return: bb7, unwind terminate (panic in a destructor during cleanup)]; + goto -> bb7; } bb7 (cleanup): { - drop(_4) -> [return: bb8, unwind terminate (panic in a destructor during cleanup)]; + goto -> bb8; } bb8 (cleanup): { resume; } }