- // MIR for `foo` before MatchBranchSimplification + // MIR for `foo` after MatchBranchSimplification fn foo(_1: Option<()>) -> () { debug bar => _1; // in scope 0 at $DIR/matches_reduce_branches.rs:6:8: 6:11 let mut _0: (); // return place in scope 0 at $DIR/matches_reduce_branches.rs:6:25: 6:25 let mut _2: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL let mut _3: isize; // in scope 0 at $DIR/matches_reduce_branches.rs:7:22: 7:26 + let mut _4: isize; // in scope 0 at $DIR/matches_reduce_branches.rs:7:22: 7:26 bb0: { StorageLive(_2); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL _3 = discriminant(_1); // scope 0 at $DIR/matches_reduce_branches.rs:7:22: 7:26 - switchInt(move _3) -> [0_isize: bb2, otherwise: bb1]; // scope 0 at $DIR/matches_reduce_branches.rs:7:22: 7:26 + StorageLive(_4); // scope 0 at $DIR/matches_reduce_branches.rs:7:22: 7:26 + _4 = move _3; // scope 0 at $DIR/matches_reduce_branches.rs:7:22: 7:26 + _2 = Eq(_4, const 0_isize); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL + StorageDead(_4); // scope 0 at $DIR/matches_reduce_branches.rs:7:22: 7:26 + goto -> bb3; // scope 0 at $DIR/matches_reduce_branches.rs:7:22: 7:26 } bb1: { _2 = const false; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL goto -> bb3; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL } bb2: { _2 = const true; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL goto -> bb3; // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL } bb3: { switchInt(_2) -> [false: bb4, otherwise: bb5]; // scope 0 at $DIR/matches_reduce_branches.rs:7:5: 9:6 } bb4: { _0 = const (); // scope 0 at $DIR/matches_reduce_branches.rs:9:6: 9:6 goto -> bb5; // scope 0 at $DIR/matches_reduce_branches.rs:7:5: 9:6 } bb5: { StorageDead(_2); // scope 0 at $DIR/matches_reduce_branches.rs:10:1: 10:2 return; // scope 0 at $DIR/matches_reduce_branches.rs:10:2: 10:2 } }