mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-31 13:40:15 +03:00
41 lines
1.1 KiB
Rust
41 lines
1.1 KiB
Rust
//@ compile-flags: -O -Zinline-mir=no -Cno-prepopulate-passes -Zmerge-functions=disabled
|
|
|
|
#![crate_type = "lib"]
|
|
|
|
// This test checks that we add inlinehint for #[inline], noinline for #[inline(never)], and
|
|
// alwaysinline for #[inline(always)] to call sites.
|
|
|
|
#[unsafe(no_mangle)]
|
|
fn calls_something_noinline() {
|
|
// CHECK-LABEL @calls_something_noinline
|
|
// CHECK: call void @{{.*}}noinline_fn() #[[NOINLINE:[0-9]+]]
|
|
noinline_fn();
|
|
}
|
|
|
|
#[inline(never)]
|
|
fn noinline_fn() {}
|
|
|
|
#[unsafe(no_mangle)]
|
|
fn calls_something_inline() {
|
|
// CHECK-LABEL @calls_something_inlinehint
|
|
// CHECK: call void @{{.*}}inlinehint_fn() #[[INLINEHINT:[0-9]+]]
|
|
inlinehint_fn();
|
|
}
|
|
|
|
#[inline]
|
|
fn inlinehint_fn() {}
|
|
|
|
#[unsafe(no_mangle)]
|
|
fn calls_something_alwaysinline() {
|
|
// CHECK-LABEL @calls_something_alwaysinline
|
|
// CHECK: call void @{{.*}}alwaysinline_fn() #[[ALWAYSINLINE:[0-9]+]]
|
|
alwaysinline_fn();
|
|
}
|
|
|
|
#[inline(always)]
|
|
fn alwaysinline_fn() {}
|
|
|
|
//CHECK: attributes #[[NOINLINE]] = {{{.*}} noinline {{.*}}}
|
|
//CHECK: attributes #[[INLINEHINT]] = {{{.*}} inlinehint {{.*}}}
|
|
//CHECK: attributes #[[ALWAYSINLINE]] = {{{.*}} alwaysinline {{.*}}}
|