- // MIR for `generic` before InstSimplify-after-simplifycfg
+ // MIR for `generic` after InstSimplify-after-simplifycfg
  
  fn generic() -> () {
      let mut _0: ();
      let _1: ();
      let _2: ();
      let _3: ();
  
      bb0: {
          StorageLive(_1);
          _1 = assert_inhabited::<T>() -> [return: bb1, unwind unreachable];
      }
  
      bb1: {
          StorageDead(_1);
          StorageLive(_2);
          _2 = assert_zero_valid::<T>() -> [return: bb2, unwind unreachable];
      }
  
      bb2: {
          StorageDead(_2);
          StorageLive(_3);
          _3 = assert_mem_uninitialized_valid::<T>() -> [return: bb3, unwind unreachable];
      }
  
      bb3: {
          StorageDead(_3);
          _0 = const ();
          return;
      }
  }
  
