also (properly) test nounwind on function definitions

This commit is contained in:
Ralf Jung 2019-10-12 20:40:03 +02:00
parent a1a8f33abb
commit 63af27f9ea
2 changed files with 19 additions and 6 deletions

View file

@ -1,6 +0,0 @@
// compile-flags: -O
#![crate_type = "lib"]
// CHECK: Function Attrs: norecurse nounwind
pub extern fn foo() {}

View file

@ -0,0 +1,19 @@
// compile-flags: -C opt-level=0
#![crate_type = "lib"]
#![feature(unwind_attributes)]
// Make sure these all do *not* get the attribute.
// We disable optimizations to prevent LLVM from infering the attribute.
// CHECK-NOT: nounwind
// "C" ABI
// pub extern fn foo() {} // FIXME right now we don't abort-on-panic but add `nounwind` nevertheless
#[unwind(allowed)]
pub extern fn foo_allowed() {}
// "Rust" ABI (`extrn "Rust"` could be removed as all `fn` get it implicitly; we leave it
// in for clarity.)
pub extern "Rust" fn bar() {}
#[unwind(allowed)]
pub extern "Rust" fn bar_allowed() {}