// Tests inlining of diverging calls. // // ignore-wasm32-bare compiled with panic=abort by default #![crate_type = "lib"] // EMIT_MIR inline_diverging.f.Inline.diff pub fn f() { sleep(); } // EMIT_MIR inline_diverging.g.Inline.diff pub fn g(i: i32) -> u32 { if i > 0 { i as u32 } else { panic(); } } // EMIT_MIR inline_diverging.h.Inline.diff pub fn h() { call_twice(sleep); } #[inline(always)] pub fn call_twice R>(f: F) -> (R, R) { let a = f(); let b = f(); (a, b) } #[inline(always)] fn panic() -> ! { panic!(); } #[inline(always)] fn sleep() -> ! { loop {} }