// MIR for `int_range` after PreCodegen fn int_range(_1: usize, _2: usize) -> () { debug start => _1; debug end => _2; let mut _0: (); let mut _3: usize; let mut _6: std::option::Option; let mut _9: isize; let _11: (); scope 1 { debug iter => std::ops::Range{ .0 => _3, .1 => _2, }; let _10: usize; scope 2 { debug i => _10; } scope 4 (inlined iter::range::>::next) { debug self => &std::ops::Range{ .0 => _3, .1 => _2, }; scope 5 (inlined as iter::range::RangeIteratorImpl>::spec_next) { debug self => &std::ops::Range{ .0 => _3, .1 => _2, }; let mut _5: bool; let _7: usize; let mut _8: usize; scope 6 { debug old => _7; scope 7 { } } scope 8 (inlined cmp::impls::::lt) { debug self => &_3; debug other => &_2; let mut _4: usize; } } } } scope 3 (inlined as IntoIterator>::into_iter) { debug self => std::ops::Range{ .0 => _1, .1 => _2, }; } bb0: { StorageLive(_3); _3 = _1; goto -> bb1; } bb1: { StorageLive(_6); StorageLive(_7); StorageLive(_5); StorageLive(_4); _4 = _3; _5 = Lt(move _4, _2); StorageDead(_4); switchInt(move _5) -> [0: bb2, otherwise: bb3]; } bb2: { _6 = Option::::None; goto -> bb5; } bb3: { _7 = _3; StorageLive(_8); _8 = ::forward_unchecked(_7, const 1_usize) -> [return: bb4, unwind continue]; } bb4: { _3 = move _8; StorageDead(_8); _6 = Option::::Some(_7); goto -> bb5; } bb5: { StorageDead(_5); StorageDead(_7); _9 = discriminant(_6); switchInt(move _9) -> [0: bb6, 1: bb7, otherwise: bb9]; } bb6: { StorageDead(_6); StorageDead(_3); return; } bb7: { _10 = ((_6 as Some).0: usize); _11 = opaque::(move _10) -> [return: bb8, unwind continue]; } bb8: { StorageDead(_6); goto -> bb1; } bb9: { unreachable; } }