diff options
Diffstat (limited to 'tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir')
-rw-r--r-- | tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir new file mode 100644 index 000000000..98c267e8e --- /dev/null +++ b/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir @@ -0,0 +1,61 @@ +// MIR for `step_forward` after PreCodegen + +fn step_forward(_1: u32, _2: usize) -> u32 { + debug x => _1; + debug n => _2; + let mut _0: u32; + scope 1 (inlined <u32 as Step>::forward) { + debug start => _1; + debug n => _2; + let _3: std::option::Option<u32>; + let mut _4: &std::option::Option<u32>; + let mut _7: bool; + let mut _8: u32; + scope 2 { + } + scope 3 (inlined Option::<u32>::is_none) { + debug self => _4; + let mut _6: bool; + scope 4 (inlined Option::<u32>::is_some) { + debug self => _4; + let mut _5: isize; + } + } + scope 5 (inlined core::num::<impl u32>::wrapping_add) { + debug self => _1; + debug rhs => _8; + } + } + + bb0: { + StorageLive(_7); + StorageLive(_4); + StorageLive(_3); + _3 = <u32 as Step>::forward_checked(_1, _2) -> [return: bb1, unwind continue]; + } + + bb1: { + _4 = &_3; + StorageLive(_6); + _5 = discriminant((*_4)); + _6 = Eq(_5, const 1_isize); + _7 = Not(move _6); + StorageDead(_6); + StorageDead(_3); + StorageDead(_4); + switchInt(move _7) -> [0: bb3, otherwise: bb2]; + } + + bb2: { + assert(!const true, "attempt to compute `{} + {}`, which would overflow", const _, const 1_u32) -> [success: bb3, unwind continue]; + } + + bb3: { + StorageDead(_7); + StorageLive(_8); + _8 = _2 as u32 (IntToInt); + _0 = Add(_1, _8); + StorageDead(_8); + return; + } +} |