//@ needs-unwind - this test verifies the amount of drop calls when unwinding is used
//@ compile-flags: -C no-prepopulate-passes

#![crate_type = "lib"]

struct SomeUniqueName;

impl Drop for SomeUniqueName {
    #[inline(never)]
    fn drop(&mut self) {}
}

#[inline(never)]
pub fn possibly_unwinding() {}

// CHECK-LABEL: @droppy
#[no_mangle]
pub fn droppy() {
    // Check that there are exactly 6 drop calls. The cleanups for the unwinding should be reused,
    // so that's one new drop call per call to possibly_unwinding(), and finally 3 drop calls for
    // the regular function exit. We used to have problems with quadratic growths of drop calls in
    // such functions.
    // FIXME(eddyb) the `void @` forces a match on the instruction, instead of the
    // comment, that's `; call core::ptr::drop_in_place::<drop::SomeUniqueName>`
    // for the `v0` mangling, should switch to matching on that once `legacy` is gone.
    // CHECK-COUNT-6: {{(call|invoke) void @.*}}drop_in_place{{.*}}SomeUniqueName
    // CHECK-NOT: {{(call|invoke) void @.*}}drop_in_place{{.*}}SomeUniqueName
    // The next line checks for the } that ends the function definition
    // CHECK-LABEL: {{^[}]}}
    let _s = SomeUniqueName;
    possibly_unwinding();
    let _s = SomeUniqueName;
    possibly_unwinding();
    let _s = SomeUniqueName;
    possibly_unwinding();
}
