- // MIR for `two` before Inline
+ // MIR for `two` after Inline
  
  fn two() -> () {
      let mut _0: ();
      let _1: ();
+     let mut _2: fn() {f};
+     let mut _4: ();
+     scope 1 (inlined call::<fn() {f}>) {
+         debug f => _2;
+         let _3: ();
+         scope 2 (inlined <fn() {f} as FnOnce<()>>::call_once - shim(fn() {f})) {
+             scope 3 (inlined f) {
+                 let _5: ();
+             }
+         }
+     }
  
      bb0: {
          StorageLive(_1);
-         _1 = call::<fn() {f}>(f) -> [return: bb1, unwind unreachable];
+         StorageLive(_2);
+         _2 = f;
+         StorageLive(_3);
+         StorageLive(_4);
+         _4 = const ();
+         StorageLive(_5);
+         _5 = call::<fn() {f}>(f) -> [return: bb1, unwind unreachable];
      }
  
      bb1: {
+         StorageDead(_5);
+         StorageDead(_4);
+         StorageDead(_3);
+         StorageDead(_2);
          StorageDead(_1);
          _0 = const ();
          return;
      }
  }
  
