- // MIR for `arithmetic_checked` before GVN + // MIR for `arithmetic_checked` after GVN fn arithmetic_checked(_1: u64) -> () { debug x => _1; let mut _0: (); let _2: (); let mut _3: u64; let mut _4: u64; let mut _5: (u64, bool); let _6: (); let mut _7: u64; let mut _8: u64; let mut _9: (u64, bool); let _10: (); let mut _11: u64; let mut _12: u64; let mut _13: u64; let mut _14: (u64, bool); let _15: (); let mut _16: u64; let mut _17: u64; let mut _18: (u64, bool); let _19: (); let mut _20: u64; let mut _21: u64; let mut _22: (u64, bool); bb0: { StorageLive(_2); StorageLive(_3); StorageLive(_4); _4 = copy _1; - _5 = AddWithOverflow(copy _4, const 0_u64); - assert(!move (_5.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, const 0_u64) -> [success: bb1, unwind continue]; + _5 = AddWithOverflow(copy _1, const 0_u64); + assert(!const false, "attempt to compute `{} + {}`, which would overflow", copy _1, const 0_u64) -> [success: bb1, unwind continue]; } bb1: { - _3 = move (_5.0: u64); + _3 = copy _1; StorageDead(_4); - _2 = opaque::(move _3) -> [return: bb2, unwind continue]; + _2 = opaque::(copy _1) -> [return: bb2, unwind continue]; } bb2: { StorageDead(_3); StorageDead(_2); StorageLive(_6); StorageLive(_7); StorageLive(_8); _8 = copy _1; - _9 = SubWithOverflow(copy _8, const 0_u64); - assert(!move (_9.1: bool), "attempt to compute `{} - {}`, which would overflow", move _8, const 0_u64) -> [success: bb3, unwind continue]; + _9 = copy _5; + assert(!const false, "attempt to compute `{} - {}`, which would overflow", copy _1, const 0_u64) -> [success: bb3, unwind continue]; } bb3: { - _7 = move (_9.0: u64); + _7 = copy _1; StorageDead(_8); - _6 = opaque::(move _7) -> [return: bb4, unwind continue]; + _6 = opaque::(copy _1) -> [return: bb4, unwind continue]; } bb4: { StorageDead(_7); StorageDead(_6); StorageLive(_10); - StorageLive(_11); + nop; StorageLive(_12); _12 = copy _1; StorageLive(_13); _13 = copy _1; - _14 = SubWithOverflow(copy _12, copy _13); - assert(!move (_14.1: bool), "attempt to compute `{} - {}`, which would overflow", move _12, move _13) -> [success: bb5, unwind continue]; + _14 = const (0_u64, false); + assert(!const false, "attempt to compute `{} - {}`, which would overflow", copy _1, copy _1) -> [success: bb5, unwind continue]; } bb5: { - _11 = move (_14.0: u64); + _11 = const 0_u64; StorageDead(_13); StorageDead(_12); - _10 = opaque::(move _11) -> [return: bb6, unwind continue]; + _10 = opaque::(const 0_u64) -> [return: bb6, unwind continue]; } bb6: { - StorageDead(_11); + nop; StorageDead(_10); StorageLive(_15); StorageLive(_16); StorageLive(_17); _17 = copy _1; - _18 = MulWithOverflow(copy _17, const 0_u64); - assert(!move (_18.1: bool), "attempt to compute `{} * {}`, which would overflow", move _17, const 0_u64) -> [success: bb7, unwind continue]; + _18 = const (0_u64, false); + assert(!const false, "attempt to compute `{} * {}`, which would overflow", copy _1, const 0_u64) -> [success: bb7, unwind continue]; } bb7: { - _16 = move (_18.0: u64); + _16 = const 0_u64; StorageDead(_17); - _15 = opaque::(move _16) -> [return: bb8, unwind continue]; + _15 = opaque::(const 0_u64) -> [return: bb8, unwind continue]; } bb8: { StorageDead(_16); StorageDead(_15); StorageLive(_19); StorageLive(_20); StorageLive(_21); _21 = copy _1; - _22 = MulWithOverflow(copy _21, const 1_u64); - assert(!move (_22.1: bool), "attempt to compute `{} * {}`, which would overflow", move _21, const 1_u64) -> [success: bb9, unwind continue]; + _22 = copy _5; + assert(!const false, "attempt to compute `{} * {}`, which would overflow", copy _1, const 1_u64) -> [success: bb9, unwind continue]; } bb9: { - _20 = move (_22.0: u64); + _20 = copy _1; StorageDead(_21); - _19 = opaque::(move _20) -> [return: bb10, unwind continue]; + _19 = opaque::(copy _1) -> [return: bb10, unwind continue]; } bb10: { StorageDead(_20); StorageDead(_19); _0 = const (); return; } } + + ALLOC0 (size: 16, align: 8) { .. }