| - // MIR for `foo` before MatchBranchSimplification |
| + // MIR for `foo` after MatchBranchSimplification |
| |
| fn foo(_1: [u8; 16]) -> Option<[u8; 4]> { |
| debug bytes => _1; |
| let mut _0: std::option::Option<[u8; 4]>; |
| let _2: [u32; 4]; |
| let mut _3: [u8; 16]; |
| let mut _5: [u8; 4]; |
| let mut _6: u32; |
| scope 1 { |
| debug dwords => _2; |
| scope 2 { |
| debug ip => _4; |
| let _4: u32; |
| } |
| } |
| |
| bb0: { |
| StorageLive(_2); |
| StorageLive(_3); |
| _3 = copy _1; |
| _2 = move _3 as [u32; 4] (Transmute); |
| StorageDead(_3); |
| switchInt(copy _2[0 of 4]) -> [0: bb1, otherwise: bb4]; |
| } |
| |
| bb1: { |
| switchInt(copy _2[1 of 4]) -> [0: bb2, otherwise: bb4]; |
| } |
| |
| bb2: { |
| switchInt(copy _2[2 of 4]) -> [0: bb3, 4294901760: bb3, otherwise: bb4]; |
| } |
| |
| bb3: { |
| StorageLive(_4); |
| _4 = copy _2[3 of 4]; |
| StorageLive(_5); |
| StorageLive(_6); |
| _6 = copy _4; |
| _5 = move _6 as [u8; 4] (Transmute); |
| StorageDead(_6); |
| _0 = Option::<[u8; 4]>::Some(move _5); |
| StorageDead(_5); |
| StorageDead(_4); |
| goto -> bb5; |
| } |
| |
| bb4: { |
| _0 = Option::<[u8; 4]>::None; |
| goto -> bb5; |
| } |
| |
| bb5: { |
| StorageDead(_2); |
| return; |
| } |
| } |
| |