| - // MIR for `inner` before GVN |
| + // MIR for `inner` after GVN |
| |
| fn inner(_1: u32) -> i64 { |
| debug fields => _1; |
| let mut _0: i64; |
| let mut _2: i32; |
| let mut _3: u32; |
| let mut _4: u32; |
| let mut _5: u32; |
| let mut _6: u32; |
| let mut _7: u32; |
| let mut _8: u32; |
| let mut _9: u32; |
| let mut _10: u32; |
| let mut _11: bool; |
| let mut _12: u32; |
| let mut _13: bool; |
| scope 1 (inlined imm8) { |
| let mut _14: u32; |
| scope 2 { |
| } |
| } |
| scope 3 (inlined core::num::<impl u32>::rotate_right) { |
| } |
| |
| bb0: { |
| StorageLive(_2); |
| StorageLive(_3); |
| StorageLive(_4); |
| StorageLive(_5); |
| _5 = copy _1; |
| nop; |
| - StorageLive(_14); |
| - _14 = BitAnd(copy _5, const 255_u32); |
| - _4 = BitOr(const 0_u32, move _14); |
| - StorageDead(_14); |
| + nop; |
| + _14 = BitAnd(copy _1, const 255_u32); |
| + _4 = copy _14; |
| + nop; |
| StorageDead(_5); |
| StorageLive(_6); |
| StorageLive(_7); |
| StorageLive(_8); |
| StorageLive(_9); |
| _9 = copy _1; |
| - _10 = const 8_i32 as u32 (IntToInt); |
| - _11 = Lt(move _10, const 32_u32); |
| - assert(move _11, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind unreachable]; |
| + _10 = const 8_u32; |
| + _11 = const true; |
| + assert(const true, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind unreachable]; |
| } |
| |
| bb1: { |
| - _8 = Shr(move _9, const 8_i32); |
| + _8 = Shr(copy _1, const 8_i32); |
| StorageDead(_9); |
| _7 = BitAnd(move _8, const 15_u32); |
| StorageDead(_8); |
| - _12 = const 1_i32 as u32 (IntToInt); |
| - _13 = Lt(move _12, const 32_u32); |
| - assert(move _13, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind unreachable]; |
| + _12 = const 1_u32; |
| + _13 = const true; |
| + assert(const true, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind unreachable]; |
| } |
| |
| bb2: { |
| _6 = Shl(move _7, const 1_i32); |
| StorageDead(_7); |
| - _3 = rotate_right::<u32>(move _4, move _6) -> [return: bb3, unwind unreachable]; |
| + _3 = rotate_right::<u32>(copy _14, move _6) -> [return: bb3, unwind unreachable]; |
| } |
| |
| bb3: { |
| StorageDead(_6); |
| StorageDead(_4); |
| _2 = move _3 as i32 (IntToInt); |
| StorageDead(_3); |
| _0 = move _2 as i64 (IntToInt); |
| StorageDead(_2); |
| return; |
| } |
| } |
| |