- // MIR for `main` before DataflowConstProp + // MIR for `main` after DataflowConstProp fn main() -> () { let mut _0: (); let _1: i32; let mut _4: i32; let mut _5: i32; let mut _6: (i32, bool); let mut _9: i32; let mut _10: (i32, bool); scope 1 { debug a => _1; let _2: i32; scope 2 { debug b => _2; let _3: i32; scope 3 { debug c => _3; let _7: i32; scope 4 { debug d => _7; let _8: i32; scope 5 { debug e => _8; } } } } } bb0: { StorageLive(_1); _1 = const 1_i32; StorageLive(_2); _2 = const 2_i32; StorageLive(_3); StorageLive(_4); - _4 = _1; + _4 = const 1_i32; StorageLive(_5); - _5 = _2; - _6 = CheckedAdd(_4, _5); - assert(!move (_6.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, move _5) -> [success: bb1, unwind continue]; + _5 = const 2_i32; + _6 = const (3_i32, false); + assert(!const false, "attempt to compute `{} + {}`, which would overflow", const 1_i32, const 2_i32) -> [success: bb1, unwind continue]; } bb1: { - _3 = move (_6.0: i32); + _3 = const 3_i32; StorageDead(_5); StorageDead(_4); StorageLive(_7); _7 = const core::num::::MAX; StorageLive(_8); StorageLive(_9); - _9 = _7; - _10 = CheckedAdd(_9, const 1_i32); - assert(!move (_10.1: bool), "attempt to compute `{} + {}`, which would overflow", move _9, const 1_i32) -> [success: bb2, unwind continue]; + _9 = const i32::MAX; + _10 = const (i32::MIN, true); + assert(!const true, "attempt to compute `{} + {}`, which would overflow", const i32::MAX, const 1_i32) -> [success: bb2, unwind continue]; } bb2: { - _8 = move (_10.0: i32); + _8 = const i32::MIN; StorageDead(_9); _0 = const (); StorageDead(_8); StorageDead(_7); StorageDead(_3); StorageDead(_2); StorageDead(_1); return; } + } + + ALLOC0 (size: 8, align: 4) { + 00 00 00 80 01 __ __ __ │ .....░░░ + } + + ALLOC1 (size: 8, align: 4) { + 03 00 00 00 00 __ __ __ │ .....░░░ }