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