- // MIR for `opt` before RemoveUnneededDrops
+ // MIR for `opt` after RemoveUnneededDrops
  
  fn opt(_1: bool) -> () {
      debug x => _1;
      let mut _0: ();
      let _2: ();
      let mut _3: bool;
      scope 1 (inlined std::mem::drop::<bool>) {
      }
  
      bb0: {
-         nop;
          StorageLive(_3);
          _3 = copy _1;
-         drop(_3) -> [return: bb1, unwind continue];
-     }
- 
-     bb1: {
          StorageDead(_3);
-         nop;
-         nop;
          return;
      }
  }
  
