// MIR for `range_iter_next` after PreCodegen fn range_iter_next(_1: &mut std::ops::Range) -> Option { debug it => _1; // in scope 0 at $DIR/range_iter.rs:+0:24: +0:26 let mut _0: std::option::Option; // return place in scope 0 at $DIR/range_iter.rs:+0:48: +0:59 scope 1 (inlined iter::range::>::next) { // at $DIR/range_iter.rs:11:8: 11:14 debug self => _1; // in scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL scope 2 (inlined as iter::range::RangeIteratorImpl>::spec_next) { // at $SRC_DIR/core/src/iter/range.rs:LL:COL debug self => _1; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL let mut _2: &u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL let mut _3: &u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL let mut _4: bool; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL let _5: u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL let mut _6: u32; // in scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL scope 3 { debug old => _5; // in scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL scope 4 { } } } } bb0: { StorageLive(_5); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL StorageLive(_4); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL StorageLive(_2); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL _2 = &((*_1).0: u32); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL StorageLive(_3); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL _3 = &((*_1).1: u32); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL _4 = ::lt(move _2, move _3) -> bb1; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL // mir::Constant // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL // + literal: Const { ty: for<'a, 'b> fn(&'a u32, &'b u32) -> bool {::lt}, val: Value() } } bb1: { StorageDead(_3); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL StorageDead(_2); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL switchInt(move _4) -> [0: bb2, otherwise: bb3]; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL } bb2: { _0 = Option::::None; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL goto -> bb5; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL } bb3: { _5 = ((*_1).0: u32); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL StorageLive(_6); // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL _6 = ::forward_unchecked(_5, const 1_usize) -> bb4; // scope 4 at $SRC_DIR/core/src/iter/range.rs:LL:COL // mir::Constant // + span: $SRC_DIR/core/src/iter/range.rs:LL:COL // + literal: Const { ty: unsafe fn(u32, usize) -> u32 {::forward_unchecked}, val: Value() } } bb4: { ((*_1).0: u32) = move _6; // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL StorageDead(_6); // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL _0 = Option::::Some(_5); // scope 3 at $SRC_DIR/core/src/iter/range.rs:LL:COL goto -> bb5; // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL } bb5: { StorageDead(_4); // scope 2 at $SRC_DIR/core/src/iter/range.rs:LL:COL StorageDead(_5); // scope 1 at $SRC_DIR/core/src/iter/range.rs:LL:COL return; // scope 0 at $DIR/range_iter.rs:+2:2: +2:2 } }