- // MIR for `main` before GVN
+ // MIR for `main` after GVN
  
  fn main() -> () {
      let mut _0: ();
      let mut _1: bool;
      let _2: bool;
      scope 1 {
          debug x => _2;
      }
  
      bb0: {
          StorageLive(_1);
-         StorageLive(_2);
+         nop;
          _2 = const false;
-         _1 = _2;
-         StorageDead(_2);
-         switchInt(_1) -> [0: bb2, otherwise: bb1];
+         _1 = const false;
+         nop;
+         switchInt(const false) -> [0: bb2, otherwise: bb1];
      }
  
      bb1: {
          _0 = noop() -> [return: bb2, unwind continue];
      }
  
      bb2: {
          StorageDead(_1);
          return;
      }
  }
  
