- // MIR for `h` before Inline
+ // MIR for `h` after Inline
  
  fn h() -> () {
      let mut _0: ();
      let _1: (!, !);
+     let mut _2: fn() -> ! {sleep};
+     let mut _7: ();
+     let mut _8: ();
+     scope 1 (inlined call_twice::<!, fn() -> ! {sleep}>) {
+         debug f => _2;
+         let mut _3: &fn() -> ! {sleep};
+         let _4: !;
+         let mut _5: &fn() -> ! {sleep};
+         scope 2 {
+             debug a => _4;
+             let _6: !;
+             scope 3 {
+                 debug b => _6;
+             }
+             scope 6 (inlined <fn() -> ! {sleep} as Fn<()>>::call - shim(fn() -> ! {sleep})) {
+                 scope 7 (inlined sleep) {
+                 }
+             }
+         }
+         scope 4 (inlined <fn() -> ! {sleep} as Fn<()>>::call - shim(fn() -> ! {sleep})) {
+             scope 5 (inlined sleep) {
+             }
+         }
+     }
  
      bb0: {
          StorageLive(_1);
-         _1 = call_twice::<!, fn() -> ! {sleep}>(sleep) -> unwind unreachable;
+         StorageLive(_2);
+         _2 = sleep;
+         StorageLive(_4);
+         StorageLive(_6);
+         StorageLive(_3);
+         _3 = &_2;
+         StorageLive(_7);
+         _7 = const ();
+         goto -> bb1;
+     }
+ 
+     bb1: {
+         goto -> bb1;
      }
  }
  
