- // MIR for `nrvo` before DestinationPropagation
+ // MIR for `nrvo` after DestinationPropagation
  
  fn nrvo(_1: for<'a> fn(&'a mut [u8; 1024])) -> [u8; 1024] {
      debug init => _1;
      let mut _0: [u8; 1024];
      let mut _2: [u8; 1024];
      let _3: ();
      let mut _4: for<'a> fn(&'a mut [u8; 1024]);
      let mut _5: &mut [u8; 1024];
      let mut _6: &mut [u8; 1024];
      scope 1 {
          debug buf => _2;
      }
  
      bb0: {
          StorageLive(_2);
          _2 = [const 0_u8; 1024];
          StorageLive(_3);
-         StorageLive(_4);
-         _4 = copy _1;
+         nop;
+         nop;
          StorageLive(_5);
          StorageLive(_6);
          _6 = &mut _2;
          _5 = &mut (*_6);
-         _3 = move _4(move _5) -> [return: bb1, unwind continue];
+         _3 = move _1(move _5) -> [return: bb1, unwind continue];
      }
  
      bb1: {
          StorageDead(_5);
-         StorageDead(_4);
+         nop;
          StorageDead(_6);
          StorageDead(_3);
          _0 = copy _2;
          StorageDead(_2);
          return;
      }
  }
  
