- // MIR for `h` before Inline
+ // MIR for `h` after Inline
  
  fn h() -> () {
      let mut _0: ();
      let _1: (!, !);
+     let mut _2: fn() -> ! {sleep};
+     let mut _8: ();
+     let mut _9: ();
+     scope 1 (inlined call_twice::<!, fn() -> ! {sleep}>) {
+         debug f => _2;
+         let mut _3: &fn() -> ! {sleep};
+         let _4: !;
+         let mut _5: &fn() -> ! {sleep};
+         let mut _7: !;
+         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 continue;
+         StorageLive(_2);
+         _2 = sleep;
+         StorageLive(_6);
+         StorageLive(_4);
+         StorageLive(_3);
+         _3 = &_2;
+         StorageLive(_8);
+         _8 = const ();
+         goto -> bb1;
+     }
+ 
+     bb1: {
+         goto -> bb1;
      }
  }
  
