- // MIR for `main` before ConstProp + // MIR for `main` after ConstProp fn main() -> () { let mut _0: (); let _1: i32; let mut _3: i32; let mut _4: bool; let mut _5: bool; let mut _6: bool; let mut _7: bool; scope 1 { debug y => _1; let _2: i32; scope 2 { debug _z => _2; } } bb0: { StorageLive(_1); _1 = const 0_i32; StorageLive(_2); StorageLive(_3); - _3 = _1; - _4 = Eq(_3, const 0_i32); - assert(!move _4, "attempt to divide `{}` by zero", const 1_i32) -> bb1; + _3 = const 0_i32; + _4 = const true; + assert(!const true, "attempt to divide `{}` by zero", const 1_i32) -> bb1; } bb1: { - _5 = Eq(_3, const -1_i32); - _6 = Eq(const 1_i32, const i32::MIN); - _7 = BitAnd(move _5, move _6); - assert(!move _7, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> bb2; + _5 = const false; + _6 = const false; + _7 = const false; + assert(!const false, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> bb2; } bb2: { _2 = Div(const 1_i32, move _3); StorageDead(_3); _0 = const (); StorageDead(_2); StorageDead(_1); return; } }