// compile-flags: -C no-prepopulate-passes // ignore-wasm32-bare compiled with panic=abort by default #![crate_type = "lib"] #![feature(unwind_attributes)] extern { // CHECK: Function Attrs:{{.*}}nounwind // CHECK-NEXT: declare void @extern_fn fn extern_fn(); // CHECK-NOT: Function Attrs:{{.*}}nounwind // CHECK: declare void @unwinding_extern_fn #[unwind(allowed)] fn unwinding_extern_fn(); // CHECK-NOT: nounwind // CHECK: declare void @aborting_extern_fn #[unwind(aborts)] fn aborting_extern_fn(); // FIXME: we want to have the attribute here } extern "Rust" { // CHECK-NOT: nounwind // CHECK: declare void @rust_extern_fn fn rust_extern_fn(); // CHECK-NOT: nounwind // CHECK: declare void @rust_unwinding_extern_fn #[unwind(allowed)] fn rust_unwinding_extern_fn(); // CHECK-NOT: nounwind // CHECK: declare void @rust_aborting_extern_fn #[unwind(aborts)] fn rust_aborting_extern_fn(); // FIXME: we want to have the attribute here } pub unsafe fn force_declare() { extern_fn(); unwinding_extern_fn(); aborting_extern_fn(); rust_extern_fn(); rust_unwinding_extern_fn(); rust_aborting_extern_fn(); }