- // MIR for `wrap_unwrap` before GVN
+ // MIR for `wrap_unwrap` after GVN
  
  fn wrap_unwrap(_1: T) -> T {
      debug x => _1;
      let mut _0: T;
      let mut _2: std::option::Option<T>;
      let mut _3: T;
      let mut _4: isize;
      let _5: T;
      let mut _6: !;
      scope 1 {
          debug y => _5;
      }
  
      bb0: {
          StorageLive(_2);
          StorageLive(_3);
          _3 = copy _1;
-         _2 = Option::<T>::Some(move _3);
+         _2 = Option::<T>::Some(copy _1);
          StorageDead(_3);
-         _4 = discriminant(_2);
-         switchInt(move _4) -> [0: bb2, 1: bb3, otherwise: bb1];
+         _4 = const 1_isize;
+         switchInt(const 1_isize) -> [0: bb2, 1: bb3, otherwise: bb1];
      }
  
      bb1: {
          unreachable;
      }
  
      bb2: {
          StorageLive(_6);
          _6 = begin_panic::<&str>(const "explicit panic") -> unwind continue;
      }
  
      bb3: {
          StorageLive(_5);
-         _5 = copy ((_2 as Some).0: T);
-         _0 = copy _5;
+         _5 = copy _1;
+         _0 = copy _1;
          StorageDead(_5);
          StorageDead(_2);
          return;
      }
  }
  
