- // 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) { debug x => _5; let mut _14: u32; scope 2 { debug out => _4; } } scope 3 (inlined core::num::::rotate_right) { debug self => _4; debug n => _6; } bb0: { StorageLive(_2); StorageLive(_3); StorageLive(_4); StorageLive(_5); _5 = _1; _4 = const 0_u32; - StorageLive(_14); - _14 = BitAnd(_5, const 255_u32); - _4 = BitOr(const 0_u32, move _14); - StorageDead(_14); + nop; + _14 = BitAnd(_1, const 255_u32); + _4 = _14; + nop; StorageDead(_5); StorageLive(_6); StorageLive(_7); StorageLive(_8); StorageLive(_9); _9 = _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 continue]; + _10 = const 8_u32; + _11 = const true; + assert(const true, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind continue]; } bb1: { - _8 = Shr(move _9, const 8_i32); + _8 = Shr(_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 continue]; + _12 = const 1_u32; + _13 = const true; + assert(const true, "attempt to shift left by `{}`, which would overflow", const 1_i32) -> [success: bb2, unwind continue]; } bb2: { _6 = Shl(move _7, const 1_i32); StorageDead(_7); _3 = rotate_right::(move _4, 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; } }