// MIR for `while_loop` after runtime-optimized

fn while_loop(_1: bool) -> () {
    debug c => _1;
    let mut _0: ();
    let mut _2: bool;
    let mut _3: bool;
    let mut _4: bool;
    let mut _5: bool;
    let mut _6: ();
    let mut _7: !;
    let mut _8: !;
    let _9: ();
    let mut _10: !;

    bb0: {
        goto -> bb1;
    }

    bb1: {
        StorageLive(_3);
        StorageLive(_2);
        _2 = copy _1;
        _3 = get_bool(move _2) -> [return: bb2, unwind continue];
    }

    bb2: {
        switchInt(move _3) -> [0: bb3, otherwise: bb4];
    }

    bb3: {
        StorageDead(_2);
        StorageLive(_9);
        _0 = const ();
        StorageDead(_9);
        goto -> bb8;
    }

    bb4: {
        StorageDead(_2);
        StorageLive(_5);
        StorageLive(_4);
        _4 = copy _1;
        _5 = get_bool(move _4) -> [return: bb5, unwind continue];
    }

    bb5: {
        switchInt(move _5) -> [0: bb6, otherwise: bb7];
    }

    bb6: {
        StorageDead(_4);
        _6 = const ();
        StorageDead(_5);
        StorageDead(_3);
        goto -> bb1;
    }

    bb7: {
        StorageDead(_4);
        _0 = const ();
        StorageDead(_5);
        goto -> bb8;
    }

    bb8: {
        StorageDead(_3);
        return;
    }
}
