1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// compile-flags: -O #![crate_type = "lib"] // CHECK-LABEL: @test // CHECK-NEXT: start: // CHECK-NEXT: tail call void @ext_fn0() #[no_mangle] pub fn test() { test_inner(Some(inner0)); } fn test_inner(f_maybe: Option<fn()>) { if let Some(f) = f_maybe { f(); } } fn inner0() { unsafe { ext_fn0() }; } extern "C" { fn ext_fn0(); }