2024-07-05 12:45:06 -05:00
|
|
|
// Emitting dep-info files used to not have any mention of PGO profiles used
|
|
|
|
// in compilation, which meant these profiles could be changed without consequence.
|
|
|
|
// After changing this in #100801, this test checks that the profile data is successfully
|
|
|
|
// included in dep-info emit files.
|
|
|
|
// See https://github.com/rust-lang/rust/pull/100801
|
|
|
|
|
|
|
|
//@ ignore-cross-compile
|
|
|
|
// Reason: the binary is executed
|
|
|
|
//@ needs-profiler-support
|
|
|
|
|
2024-07-17 08:31:38 -05:00
|
|
|
use run_make_support::{llvm_profdata, rfs, run, rustc};
|
2024-07-05 12:45:06 -05:00
|
|
|
|
|
|
|
fn main() {
|
|
|
|
// Generate the profile-guided-optimization (PGO) profiles
|
|
|
|
rustc().profile_generate("profiles").input("main.rs").run();
|
|
|
|
// Merge the profiles
|
|
|
|
run("main");
|
|
|
|
llvm_profdata().merge().output("merged.profdata").input("profiles").run();
|
|
|
|
// Use the profiles in compilation
|
|
|
|
rustc().profile_use("merged.profdata").emit("dep-info").input("main.rs").run();
|
|
|
|
// Check that the profile file is in the dep-info emit file
|
2024-07-17 07:42:06 -05:00
|
|
|
assert!(rfs::read_to_string("main.d").contains("merged.profdata"));
|
2024-07-05 12:45:06 -05:00
|
|
|
}
|