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