| - // MIR for `match_guard` before CleanupPostBorrowck |
| + // MIR for `match_guard` after CleanupPostBorrowck |
| |
| fn match_guard(_1: Option<&&i32>, _2: bool) -> i32 { |
| debug x => _1; |
| debug c => _2; |
| let mut _0: i32; |
| let mut _3: &std::option::Option<&&i32>; |
| let mut _4: &i32; |
| let mut _5: &&i32; |
| let mut _6: &&&i32; |
| let mut _7: isize; |
| let mut _8: bool; |
| |
| bb0: { |
| PlaceMention(_1); |
| _7 = discriminant(_1); |
| switchInt(move _7) -> [1: bb2, otherwise: bb1]; |
| } |
| |
| bb1: { |
| _0 = const 1_i32; |
| goto -> bb7; |
| } |
| |
| bb2: { |
| switchInt((*(*((_1 as Some).0: &&i32)))) -> [0: bb3, otherwise: bb1]; |
| } |
| |
| bb3: { |
| - falseEdge -> [real: bb4, imaginary: bb1]; |
| + goto -> bb4; |
| } |
| |
| bb4: { |
| - _3 = &fake shallow _1; |
| - _4 = &fake shallow (*(*((_1 as Some).0: &&i32))); |
| - _5 = &fake shallow (*((_1 as Some).0: &&i32)); |
| - _6 = &fake shallow ((_1 as Some).0: &&i32); |
| + nop; |
| + nop; |
| + nop; |
| + nop; |
| StorageLive(_8); |
| _8 = _2; |
| switchInt(move _8) -> [0: bb6, otherwise: bb5]; |
| } |
| |
| bb5: { |
| StorageDead(_8); |
| - FakeRead(ForMatchGuard, _3); |
| - FakeRead(ForMatchGuard, _4); |
| - FakeRead(ForMatchGuard, _5); |
| - FakeRead(ForMatchGuard, _6); |
| + nop; |
| + nop; |
| + nop; |
| + nop; |
| _0 = const 0_i32; |
| goto -> bb7; |
| } |
| |
| bb6: { |
| StorageDead(_8); |
| - falseEdge -> [real: bb1, imaginary: bb1]; |
| + goto -> bb1; |
| } |
| |
| bb7: { |
| return; |
| } |
| } |
| |