| - // MIR for `main` before ElaborateDrops |
| + // MIR for `main` after ElaborateDrops |
| |
| fn main() -> () { |
| let mut _0: (); |
| let _1: (); |
| let mut _2: S; |
| let mut _3: S; |
| let mut _4: S; |
| + let mut _5: bool; |
| scope 1 { |
| debug x => _1; |
| } |
| |
| bb0: { |
| + _5 = const false; |
| StorageLive(_1); |
| StorageLive(_2); |
| + _5 = const true; |
| _2 = S; |
| StorageLive(_3); |
| StorageLive(_4); |
| _4 = S; |
| _3 = S::id(move _4) -> [return: bb1, unwind: bb4]; |
| } |
| |
| bb1: { |
| StorageDead(_4); |
| + _5 = const false; |
| _1 = S::other(move _2, move _3) -> [return: bb2, unwind: bb3]; |
| } |
| |
| bb2: { |
| StorageDead(_3); |
| + _5 = const false; |
| StorageDead(_2); |
| _0 = const (); |
| StorageDead(_1); |
| return; |
| } |
| |
| bb3 (cleanup): { |
| - drop(_3) -> [return: bb5, unwind terminate(cleanup)]; |
| + goto -> bb5; |
| } |
| |
| bb4 (cleanup): { |
| - drop(_4) -> [return: bb5, unwind terminate(cleanup)]; |
| + goto -> bb5; |
| } |
| |
| bb5 (cleanup): { |
| - drop(_2) -> [return: bb6, unwind terminate(cleanup)]; |
| + goto -> bb8; |
| } |
| |
| bb6 (cleanup): { |
| resume; |
| + } |
| + |
| + bb7 (cleanup): { |
| + drop(_2) -> [return: bb6, unwind terminate(cleanup)]; |
| + } |
| + |
| + bb8 (cleanup): { |
| + switchInt(copy _5) -> [0: bb6, otherwise: bb7]; |
| } |
| } |
| |