| - // MIR for `opt3` before EarlyOtherwiseBranch |
| + // MIR for `opt3` after EarlyOtherwiseBranch |
| |
| fn opt3(_1: Option2<u32>, _2: Option2<bool>) -> u32 { |
| debug x => _1; |
| debug y => _2; |
| let mut _0: u32; |
| let mut _3: (Option2<u32>, Option2<bool>); |
| let mut _4: Option2<u32>; |
| let mut _5: Option2<bool>; |
| let mut _6: isize; |
| let mut _7: isize; |
| let mut _8: isize; |
| let mut _9: isize; |
| let _10: u32; |
| let _11: bool; |
| + let mut _12: isize; |
| + let mut _13: bool; |
| scope 1 { |
| debug a => _10; |
| debug b => _11; |
| } |
| |
| bb0: { |
| StorageLive(_3); |
| StorageLive(_4); |
| _4 = move _1; |
| StorageLive(_5); |
| _5 = move _2; |
| _3 = (move _4, move _5); |
| StorageDead(_5); |
| StorageDead(_4); |
| _9 = discriminant((_3.0: Option2<u32>)); |
| - switchInt(move _9) -> [0: bb2, 1: bb3, 2: bb4, otherwise: bb9]; |
| + StorageLive(_12); |
| + _12 = discriminant((_3.1: Option2<bool>)); |
| + StorageLive(_13); |
| + _13 = Ne(copy _9, move _12); |
| + StorageDead(_12); |
| + switchInt(move _13) -> [0: bb7, otherwise: bb1]; |
| } |
| |
| bb1: { |
| + StorageDead(_13); |
| _0 = const 1_u32; |
| - goto -> bb8; |
| + goto -> bb5; |
| } |
| |
| bb2: { |
| - _6 = discriminant((_3.1: Option2<bool>)); |
| - switchInt(move _6) -> [0: bb7, otherwise: bb1]; |
| - } |
| - |
| - bb3: { |
| - _7 = discriminant((_3.1: Option2<bool>)); |
| - switchInt(move _7) -> [1: bb6, otherwise: bb1]; |
| - } |
| - |
| - bb4: { |
| - _8 = discriminant((_3.1: Option2<bool>)); |
| - switchInt(move _8) -> [2: bb5, otherwise: bb1]; |
| - } |
| - |
| - bb5: { |
| _0 = const 3_u32; |
| - goto -> bb8; |
| + goto -> bb5; |
| } |
| |
| - bb6: { |
| + bb3: { |
| _0 = const 2_u32; |
| - goto -> bb8; |
| + goto -> bb5; |
| } |
| |
| - bb7: { |
| + bb4: { |
| StorageLive(_10); |
| _10 = copy (((_3.0: Option2<u32>) as Some).0: u32); |
| StorageLive(_11); |
| _11 = copy (((_3.1: Option2<bool>) as Some).0: bool); |
| _0 = const 0_u32; |
| StorageDead(_11); |
| StorageDead(_10); |
| - goto -> bb8; |
| + goto -> bb5; |
| } |
| |
| - bb8: { |
| + bb5: { |
| StorageDead(_3); |
| return; |
| } |
| |
| - bb9: { |
| + bb6: { |
| unreachable; |
| + } |
| + |
| + bb7: { |
| + StorageDead(_13); |
| + switchInt(copy _9) -> [0: bb4, 1: bb3, 2: bb2, otherwise: bb6]; |
| } |
| } |
| |