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