- // MIR for `opt_negative` before SimplifyComparisonIntegral
+ // MIR for `opt_negative` after SimplifyComparisonIntegral
  
  fn opt_negative(_1: i32) -> u32 {
      debug x => _1;                       // in scope 0 at $DIR/if-condition-int.rs:+0:17: +0:18
      let mut _0: u32;                     // return place in scope 0 at $DIR/if-condition-int.rs:+0:28: +0:31
      let mut _2: bool;                    // in scope 0 at $DIR/if-condition-int.rs:+1:8: +1:16
      let mut _3: i32;                     // in scope 0 at $DIR/if-condition-int.rs:+1:8: +1:9
  
      bb0: {
          StorageLive(_2);                 // scope 0 at $DIR/if-condition-int.rs:+1:8: +1:16
          StorageLive(_3);                 // scope 0 at $DIR/if-condition-int.rs:+1:8: +1:9
          _3 = _1;                         // scope 0 at $DIR/if-condition-int.rs:+1:8: +1:9
-         _2 = Eq(move _3, const -42_i32); // scope 0 at $DIR/if-condition-int.rs:+1:8: +1:16
-         StorageDead(_3);                 // scope 0 at $DIR/if-condition-int.rs:+1:15: +1:16
-         switchInt(move _2) -> [false: bb2, otherwise: bb1]; // scope 0 at $DIR/if-condition-int.rs:+1:8: +1:16
+         nop;                             // scope 0 at $DIR/if-condition-int.rs:+1:8: +1:16
+         nop;                             // scope 0 at $DIR/if-condition-int.rs:+1:15: +1:16
+         switchInt(move _3) -> [-42_i32: bb1, otherwise: bb2]; // scope 0 at $DIR/if-condition-int.rs:+1:8: +1:16
      }
  
      bb1: {
+         StorageDead(_3);                 // scope 0 at $DIR/if-condition-int.rs:+1:8: +1:16
          _0 = const 0_u32;                // scope 0 at $DIR/if-condition-int.rs:+1:19: +1:20
          goto -> bb3;                     // scope 0 at $DIR/if-condition-int.rs:+1:5: +1:33
      }
  
      bb2: {
+         StorageDead(_3);                 // scope 0 at $DIR/if-condition-int.rs:+1:8: +1:16
          _0 = const 1_u32;                // scope 0 at $DIR/if-condition-int.rs:+1:30: +1:31
          goto -> bb3;                     // scope 0 at $DIR/if-condition-int.rs:+1:5: +1:33
      }
  
      bb3: {
          StorageDead(_2);                 // scope 0 at $DIR/if-condition-int.rs:+1:32: +1:33
          return;                          // scope 0 at $DIR/if-condition-int.rs:+2:2: +2:2
      }
  }
  
