// Checks that naked functions are never inlined. //@ compile-flags: -O -Zmir-opt-level=3 //@ needs-asm-support //@ ignore-wasm32 #![crate_type = "lib"] #![feature(naked_functions)] use std::arch::naked_asm; #[naked] #[no_mangle] pub unsafe extern "C" fn f() { // Check that f has naked and noinline attributes. // // CHECK: define {{(dso_local )?}}void @f() unnamed_addr [[ATTR:#[0-9]+]] // CHECK-NEXT: start: // CHECK-NEXT: call void asm naked_asm!(""); } #[no_mangle] pub unsafe fn g() { // Check that call to f is not inlined. // // CHECK-LABEL: define {{(dso_local )?}}void @g() // CHECK-NEXT: start: // CHECK-NEXT: call void @f() f(); } // CHECK: attributes [[ATTR]] = { naked{{.*}}noinline{{.*}} }