summaryrefslogtreecommitdiffstats
path: root/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.mir
diff options
context:
space:
mode:
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.mir61
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;
+ }
+}