mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00

Previously `-Zprint-mono-items` would override the mono item collection strategy. When debugging one doesn't want to change the behaviour, so this was counter productive. Additionally, the produced behaviour was artificial and might never arise without using the option in the first place (`-Zprint-mono-items=eager` without `-Clink-dead-code`). Finally, the option was incorrectly marked as `UNTRACKED`. Resolve those issues, by turning `-Zprint-mono-items` into a boolean flag that prints results of mono item collection without changing the behaviour of mono item collection. For codegen-units test incorporate `-Zprint-mono-items` flag directly into compiletest tool. Test changes are mechanical. `-Zprint-mono-items=lazy` was removed without additional changes, and `-Zprint-mono-items=eager` was turned into `-Clink-dead-code`. Linking dead code disables internalization, so tests have been updated accordingly.
39 lines
967 B
Rust
39 lines
967 B
Rust
//@ incremental
|
|
//@ compile-flags: -Copt-level=0
|
|
|
|
#![crate_type = "lib"]
|
|
|
|
// This test checks that a monomorphic inline(always) function is instantiated in every CGU that
|
|
// references it, even though this is an unoptimized incremental build.
|
|
// It also checks that an inline(always) function is only placed in CGUs that reference it.
|
|
|
|
mod inline {
|
|
//~ MONO_ITEM fn inline::inlined_function @@ inline_always-user1[Internal] inline_always-user2[Internal]
|
|
#[inline(always)]
|
|
pub fn inlined_function() {}
|
|
}
|
|
|
|
pub mod user1 {
|
|
use super::inline;
|
|
|
|
//~ MONO_ITEM fn user1::foo @@ inline_always-user1[External]
|
|
pub fn foo() {
|
|
inline::inlined_function();
|
|
}
|
|
}
|
|
|
|
pub mod user2 {
|
|
use super::inline;
|
|
|
|
//~ MONO_ITEM fn user2::bar @@ inline_always-user2[External]
|
|
pub fn bar() {
|
|
inline::inlined_function();
|
|
}
|
|
}
|
|
|
|
pub mod non_user {
|
|
|
|
//~ MONO_ITEM fn non_user::baz @@ inline_always-non_user[External]
|
|
pub fn baz() {}
|
|
}
|