| // { dg-options "-O2 -w -fdump-tree-optimized" } |
| #![feature(no_core)] |
| #![no_core] |
| |
| #![feature(intrinsics)] |
| |
| extern "rust-intrinsic" { |
| // { dg-final { scan-tree-dump-times "__builtin_eh_pointer" 1 "optimized" } } |
| fn catch_unwind(try_fn: fn(_: *mut u8), data: *mut u8, catch_fn: fn(_: *mut u8, _: *mut u8)); |
| } |
| |
| extern "C" { |
| fn try_fn(data: *mut u8); |
| fn catch_fn(data: *mut u8, ex: *mut u8); |
| } |
| |
| pub fn not_main(d: &mut u8) { |
| unsafe { |
| // { dg-final { scan-tree-dump-times "try_fn" 1 "optimized" } } |
| catch_unwind(try_fn, d, catch_fn); |
| // { dg-final { scan-tree-dump-times "catch_fn" 1 "optimized" } } |
| } |
| } |