- // MIR for `h` before Inline + // MIR for `h` after Inline fn h() -> () { let mut _0: (); let _1: (!, !); + let mut _2: fn() -> ! {sleep}; + scope 1 (inlined call_twice:: ! {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; + } + } + } bb0: { StorageLive(_1); - _1 = call_twice:: ! {sleep}>(sleep) -> unwind unreachable; + StorageLive(_2); + _2 = sleep; + StorageLive(_4); + StorageLive(_6); + StorageLive(_3); + _3 = &_2; + _4 = ! {sleep} as Fn<()>>::call(move _3, const ()) -> [return: bb1, unwind unreachable]; + } + + bb1: { + StorageDead(_3); + StorageLive(_5); + _5 = &_2; + _6 = ! {sleep} as Fn<()>>::call(move _5, const ()) -> [return: bb2, unwind unreachable]; + } + + bb2: { + StorageDead(_5); + _1 = (move _4, move _6); + drop(_2) -> [return: bb3, unwind unreachable]; + } + + bb3: { + unreachable; } }