// MIR for `full_tested_match2` before PromoteTemps

fn full_tested_match2() -> () {
    let mut _0: ();                      // return place in scope 0 at $DIR/match_false_edges.rs:25:29: 25:29
    let mut _1: (i32, i32);              // in scope 0 at $DIR/match_false_edges.rs:26:13: 30:6
    let mut _2: std::option::Option<i32>; // in scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
    let mut _3: isize;                   // in scope 0 at $DIR/match_false_edges.rs:27:9: 27:16
    let mut _4: &std::option::Option<i32>; // in scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
    let _5: i32;                         // in scope 0 at $DIR/match_false_edges.rs:27:14: 27:15
    let _6: &i32;                        // in scope 0 at $DIR/match_false_edges.rs:27:14: 27:15
    let mut _7: bool;                    // in scope 0 at $DIR/match_false_edges.rs:27:20: 27:27
    let mut _8: i32;                     // in scope 0 at $DIR/match_false_edges.rs:27:35: 27:36
    let _9: i32;                         // in scope 0 at $DIR/match_false_edges.rs:29:14: 29:15
    let mut _10: i32;                    // in scope 0 at $DIR/match_false_edges.rs:29:24: 29:25
    scope 1 {
    }
    scope 2 {
        debug x => _5;                   // in scope 2 at $DIR/match_false_edges.rs:27:14: 27:15
        debug x => _6;                   // in scope 2 at $DIR/match_false_edges.rs:27:14: 27:15
    }
    scope 3 {
        debug y => _9;                   // in scope 3 at $DIR/match_false_edges.rs:29:14: 29:15
    }

    bb0: {
        StorageLive(_1);                 // scope 0 at $DIR/match_false_edges.rs:26:13: 30:6
        StorageLive(_2);                 // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
        _2 = std::option::Option::<i32>::Some(const 42_i32); // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
                                         // ty::Const
                                         // + ty: i32
                                         // + val: Value(Scalar(0x0000002a))
                                         // mir::Constant
                                         // + span: $DIR/match_false_edges.rs:26:24: 26:26
                                         // + literal: Const { ty: i32, val: Value(Scalar(0x0000002a)) }
        FakeRead(ForMatchedPlace, _2);   // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
        _3 = discriminant(_2);           // scope 0 at $DIR/match_false_edges.rs:27:9: 27:16
        switchInt(move _3) -> [0_isize: bb2, 1_isize: bb3, otherwise: bb5]; // scope 0 at $DIR/match_false_edges.rs:27:9: 27:16
    }

    bb1 (cleanup): {
        resume;                          // scope 0 at $DIR/match_false_edges.rs:25:1: 31:2
    }

    bb2: {
        falseEdge -> [real: bb10, imaginary: bb4]; // scope 0 at $DIR/match_false_edges.rs:28:9: 28:13
    }

    bb3: {
        falseEdge -> [real: bb6, imaginary: bb2]; // scope 0 at $DIR/match_false_edges.rs:27:9: 27:16
    }

    bb4: {
        StorageLive(_9);                 // scope 0 at $DIR/match_false_edges.rs:29:14: 29:15
        _9 = ((_2 as Some).0: i32);      // scope 0 at $DIR/match_false_edges.rs:29:14: 29:15
        StorageLive(_10);                // scope 3 at $DIR/match_false_edges.rs:29:24: 29:25
        _10 = _9;                        // scope 3 at $DIR/match_false_edges.rs:29:24: 29:25
        _1 = (const 2_i32, move _10);    // scope 3 at $DIR/match_false_edges.rs:29:20: 29:26
                                         // ty::Const
                                         // + ty: i32
                                         // + val: Value(Scalar(0x00000002))
                                         // mir::Constant
                                         // + span: $DIR/match_false_edges.rs:29:21: 29:22
                                         // + literal: Const { ty: i32, val: Value(Scalar(0x00000002)) }
        StorageDead(_10);                // scope 3 at $DIR/match_false_edges.rs:29:25: 29:26
        StorageDead(_9);                 // scope 0 at $DIR/match_false_edges.rs:29:25: 29:26
        goto -> bb11;                    // scope 0 at $DIR/match_false_edges.rs:26:13: 30:6
    }

    bb5: {
        unreachable;                     // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
    }

    bb6: {
        StorageLive(_6);                 // scope 0 at $DIR/match_false_edges.rs:27:14: 27:15
        _6 = &((_2 as Some).0: i32);     // scope 0 at $DIR/match_false_edges.rs:27:14: 27:15
        _4 = &shallow _2;                // scope 0 at $DIR/match_false_edges.rs:26:19: 26:27
        StorageLive(_7);                 // scope 0 at $DIR/match_false_edges.rs:27:20: 27:27
        _7 = const guard() -> [return: bb7, unwind: bb1]; // scope 0 at $DIR/match_false_edges.rs:27:20: 27:27
                                         // ty::Const
                                         // + ty: fn() -> bool {guard}
                                         // + val: Value(Scalar(<ZST>))
                                         // mir::Constant
                                         // + span: $DIR/match_false_edges.rs:27:20: 27:25
                                         // + literal: Const { ty: fn() -> bool {guard}, val: Value(Scalar(<ZST>)) }
    }

    bb7: {
        switchInt(move _7) -> [false: bb9, otherwise: bb8]; // scope 0 at $DIR/match_false_edges.rs:27:20: 27:27
    }

    bb8: {
        StorageDead(_7);                 // scope 0 at $DIR/match_false_edges.rs:27:36: 27:37
        FakeRead(ForMatchGuard, _4);     // scope 0 at $DIR/match_false_edges.rs:27:26: 27:27
        FakeRead(ForGuardBinding, _6);   // scope 0 at $DIR/match_false_edges.rs:27:26: 27:27
        StorageLive(_5);                 // scope 0 at $DIR/match_false_edges.rs:27:14: 27:15
        _5 = ((_2 as Some).0: i32);      // scope 0 at $DIR/match_false_edges.rs:27:14: 27:15
        StorageLive(_8);                 // scope 2 at $DIR/match_false_edges.rs:27:35: 27:36
        _8 = _5;                         // scope 2 at $DIR/match_false_edges.rs:27:35: 27:36
        _1 = (const 1_i32, move _8);     // scope 2 at $DIR/match_false_edges.rs:27:31: 27:37
                                         // ty::Const
                                         // + ty: i32
                                         // + val: Value(Scalar(0x00000001))
                                         // mir::Constant
                                         // + span: $DIR/match_false_edges.rs:27:32: 27:33
                                         // + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) }
        StorageDead(_8);                 // scope 2 at $DIR/match_false_edges.rs:27:36: 27:37
        StorageDead(_5);                 // scope 0 at $DIR/match_false_edges.rs:27:36: 27:37
        StorageDead(_6);                 // scope 0 at $DIR/match_false_edges.rs:27:36: 27:37
        goto -> bb11;                    // scope 0 at $DIR/match_false_edges.rs:26:13: 30:6
    }

    bb9: {
        StorageDead(_7);                 // scope 0 at $DIR/match_false_edges.rs:27:36: 27:37
        StorageDead(_6);                 // scope 0 at $DIR/match_false_edges.rs:27:36: 27:37
        falseEdge -> [real: bb4, imaginary: bb2]; // scope 0 at $DIR/match_false_edges.rs:27:20: 27:27
    }

    bb10: {
        _1 = (const 3_i32, const 3_i32); // scope 0 at $DIR/match_false_edges.rs:28:17: 28:23
                                         // ty::Const
                                         // + ty: i32
                                         // + val: Value(Scalar(0x00000003))
                                         // mir::Constant
                                         // + span: $DIR/match_false_edges.rs:28:18: 28:19
                                         // + literal: Const { ty: i32, val: Value(Scalar(0x00000003)) }
                                         // ty::Const
                                         // + ty: i32
                                         // + val: Value(Scalar(0x00000003))
                                         // mir::Constant
                                         // + span: $DIR/match_false_edges.rs:28:21: 28:22
                                         // + literal: Const { ty: i32, val: Value(Scalar(0x00000003)) }
        goto -> bb11;                    // scope 0 at $DIR/match_false_edges.rs:26:13: 30:6
    }

    bb11: {
        StorageDead(_2);                 // scope 0 at $DIR/match_false_edges.rs:30:6: 30:7
        StorageDead(_1);                 // scope 0 at $DIR/match_false_edges.rs:30:6: 30:7
        _0 = const ();                   // scope 0 at $DIR/match_false_edges.rs:25:29: 31:2
                                         // ty::Const
                                         // + ty: ()
                                         // + val: Value(Scalar(<ZST>))
                                         // mir::Constant
                                         // + span: $DIR/match_false_edges.rs:25:29: 31:2
                                         // + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
        return;                          // scope 0 at $DIR/match_false_edges.rs:31:2: 31:2
    }
}
