// Tests inlining of diverging calls.
//
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
//@ compile-flags: -Zinline-mir-hint-threshold=1000 -C debuginfo=full
#![crate_type = "lib"]

// EMIT_MIR inline_diverging.f.Inline.diff
pub fn f() {
    // CHECK-LABEL: fn f(
    // CHECK: (inlined sleep)
    sleep();
}

// EMIT_MIR inline_diverging.g.Inline.diff
pub fn g(i: i32) -> u32 {
    if i > 0 {
        i as u32
    } else {
        // CHECK-LABEL: fn g(
        // CHECK: (inlined panic)
        panic();
    }
}

// EMIT_MIR inline_diverging.h.Inline.diff
pub fn h() {
    // CHECK-LABEL: fn h(
    // CHECK: (inlined call_twice::<!, fn() -> ! {sleep}>)
    // CHECK-NOT: inlined
    call_twice(sleep);
}

#[inline(always)]
pub fn call_twice<R, F: Fn() -> R>(f: F) -> (R, R) {
    let a = f();
    let b = f();
    (a, b)
}

#[inline(always)]
fn panic() -> ! {
    panic!();
}

#[inline(always)]
fn sleep() -> ! {
    loop {}
}
