- // MIR for `opt` before InstCombine + // MIR for `opt` after InstCombine fn opt(_1: Option<()>) -> bool { debug x => _1; // in scope 0 at $DIR/not_equal_false.rs:3:8: 3:9 let mut _0: bool; // return place in scope 0 at $DIR/not_equal_false.rs:3:26: 3:30 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/not_equal_false.rs:4:17: 4:21 let mut _4: bool; // in scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL let mut _5: isize; // in scope 0 at $DIR/not_equal_false.rs:4:38: 4:45 let mut _6: isize; // in scope 0 at $DIR/not_equal_false.rs:4:17: 4:21 let mut _7: isize; // in scope 0 at $DIR/not_equal_false.rs:4:38: 4:45 let mut _8: bool; // in scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 bb0: { StorageLive(_2); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL _3 = discriminant(_1); // scope 0 at $DIR/not_equal_false.rs:4:17: 4:21 StorageLive(_6); // scope 0 at $DIR/not_equal_false.rs:4:17: 4:21 _6 = move _3; // scope 0 at $DIR/not_equal_false.rs:4:17: 4:21 _2 = Eq(_6, const 0_isize); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL StorageDead(_6); // scope 0 at $DIR/not_equal_false.rs:4:17: 4:21 goto -> bb4; // scope 0 at $DIR/not_equal_false.rs:4:17: 4:21 } bb1: { _0 = const true; // scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 goto -> bb3; // scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 } bb2: { StorageLive(_4); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL _5 = discriminant(_1); // scope 0 at $DIR/not_equal_false.rs:4:38: 4:45 StorageLive(_7); // scope 0 at $DIR/not_equal_false.rs:4:38: 4:45 _7 = move _5; // scope 0 at $DIR/not_equal_false.rs:4:38: 4:45 _4 = Eq(_7, const 1_isize); // scope 0 at $SRC_DIR/core/src/macros/mod.rs:LL:COL StorageDead(_7); // scope 0 at $DIR/not_equal_false.rs:4:38: 4:45 goto -> bb5; // scope 0 at $DIR/not_equal_false.rs:4:38: 4:45 } bb3: { StorageDead(_4); // scope 0 at $DIR/not_equal_false.rs:4:45: 4:46 StorageDead(_2); // scope 0 at $DIR/not_equal_false.rs:4:45: 4:46 return; // scope 0 at $DIR/not_equal_false.rs:5:2: 5:2 } bb4: { switchInt(move _2) -> [false: bb2, otherwise: bb1]; // scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 } bb5: { StorageLive(_8); // scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 _8 = move _4; // scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 - _0 = Ne(_8, const false); // scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 + _0 = _8; // scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 StorageDead(_8); // scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 goto -> bb3; // scope 0 at $DIR/not_equal_false.rs:4:5: 4:46 } }