// MIR for `use_checked_sub` after runtime-optimized

fn use_checked_sub(_1: u32, _2: u32) -> () {
    debug x => _1;
    debug rhs => _2;
    let mut _0: ();
    let mut _5: std::option::Option<u32>;
    let _7: ();
    scope 1 {
        debug delta => _6;
        let _6: u32;
        scope 2 (inlined core::num::<impl u32>::checked_sub) {
            let mut _3: bool;
            let mut _4: u32;
        }
    }

    bb0: {
        StorageLive(_5);
        StorageLive(_3);
        _3 = Lt(copy _1, copy _2);
        switchInt(move _3) -> [0: bb1, otherwise: bb3];
    }

    bb1: {
        StorageLive(_4);
        _4 = SubUnchecked(copy _1, copy _2);
        _5 = Option::<u32>::Some(move _4);
        StorageDead(_4);
        StorageDead(_3);
        StorageLive(_6);
        _6 = copy ((_5 as Some).0: u32);
        _7 = do_something(move _6) -> [return: bb2, unwind continue];
    }

    bb2: {
        StorageDead(_6);
        goto -> bb4;
    }

    bb3: {
        StorageDead(_3);
        goto -> bb4;
    }

    bb4: {
        StorageDead(_5);
        return;
    }
}
