- // MIR for `opt4` before InstCombine
+ // MIR for `opt4` after InstCombine
  
  fn opt4(_1: bool) -> u32 {
      debug x => _1;                       // in scope 0 at $DIR/bool_compare.rs:17:9: 17:10
      let mut _0: u32;                     // return place in scope 0 at $DIR/bool_compare.rs:17:21: 17:24
      let mut _2: bool;                    // in scope 0 at $DIR/bool_compare.rs:18:8: 18:18
      let mut _3: bool;                    // in scope 0 at $DIR/bool_compare.rs:18:17: 18:18
  
      bb0: {
          StorageLive(_2);                 // scope 0 at $DIR/bool_compare.rs:18:8: 18:18
          StorageLive(_3);                 // scope 0 at $DIR/bool_compare.rs:18:17: 18:18
          _3 = _1;                         // scope 0 at $DIR/bool_compare.rs:18:17: 18:18
-         _2 = Eq(const false, move _3);   // scope 0 at $DIR/bool_compare.rs:18:8: 18:18
+         _2 = Not(move _3);               // scope 0 at $DIR/bool_compare.rs:18:8: 18:18
          StorageDead(_3);                 // scope 0 at $DIR/bool_compare.rs:18:17: 18:18
          switchInt(move _2) -> [false: bb2, otherwise: bb1]; // scope 0 at $DIR/bool_compare.rs:18:5: 18:35
      }
  
      bb1: {
          _0 = const 0_u32;                // scope 0 at $DIR/bool_compare.rs:18:21: 18:22
          goto -> bb3;                     // scope 0 at $DIR/bool_compare.rs:18:5: 18:35
      }
  
      bb2: {
          _0 = const 1_u32;                // scope 0 at $DIR/bool_compare.rs:18:32: 18:33
          goto -> bb3;                     // scope 0 at $DIR/bool_compare.rs:18:5: 18:35
      }
  
      bb3: {
          StorageDead(_2);                 // scope 0 at $DIR/bool_compare.rs:18:34: 18:35
          return;                          // scope 0 at $DIR/bool_compare.rs:19:2: 19:2
      }
  }
  
