// compile-flags: -C panic=abort -O | |
#![crate_type = "lib"] | |
#![feature(unwind_attributes, core_intrinsics)] | |
extern "C" { | |
#[unwind(allow)] | |
fn bar(data: *mut u8); | |
} | |
extern "Rust" { | |
fn catch(data: *mut u8, exception: *mut u8); | |
} | |
// CHECK-LABEL: @foo | |
#[no_mangle] | |
pub unsafe fn foo() -> i32 { | |
// CHECK: call void @bar | |
// CHECK: ret i32 0 | |
std::intrinsics::r#try(|x| bar(x), 0 as *mut u8, |x, y| catch(x, y)) | |
} |