Add a test case for incremental + codegen-units interaction.
This commit is contained in:
parent
1e5b4594e1
commit
408e6e3dbd
2 changed files with 53 additions and 1 deletions
42
src/test/codegen-units/partitioning/incremental-merging.rs
Normal file
42
src/test/codegen-units/partitioning/incremental-merging.rs
Normal file
|
@ -0,0 +1,42 @@
|
|||
// ignore-tidy-linelength
|
||||
// We specify -C incremental here because we want to test the partitioning for
|
||||
// incremental compilation
|
||||
// compile-flags:-Zprint-mono-items=lazy -Cincremental=tmp/partitioning-tests/incremental-merging
|
||||
// compile-flags:-Ccodegen-units=3
|
||||
|
||||
#![crate_type = "rlib"]
|
||||
|
||||
// This test makes sure that merging of CGUs works together with incremental
|
||||
// compilation but at the same time does not modify names of CGUs that were not
|
||||
// affected by merging.
|
||||
//
|
||||
// We expect CGUs `aaa` and `bbb` to be merged (because they are the smallest),
|
||||
// while `ccc` and `ddd` are supposed to stay untouched.
|
||||
|
||||
pub mod aaa {
|
||||
//~ MONO_ITEM fn incremental_merging::aaa[0]::foo[0] @@ incremental_merging-aaa--incremental_merging-bbb[External]
|
||||
pub fn foo(a: u64) -> u64 {
|
||||
a + 1
|
||||
}
|
||||
}
|
||||
|
||||
pub mod bbb {
|
||||
//~ MONO_ITEM fn incremental_merging::bbb[0]::foo[0] @@ incremental_merging-aaa--incremental_merging-bbb[External]
|
||||
pub fn foo(a: u64, b: u64) -> u64 {
|
||||
a + b + 1
|
||||
}
|
||||
}
|
||||
|
||||
pub mod ccc {
|
||||
//~ MONO_ITEM fn incremental_merging::ccc[0]::foo[0] @@ incremental_merging-ccc[External]
|
||||
pub fn foo(a: u64, b: u64, c: u64) -> u64 {
|
||||
a + b + c + 1
|
||||
}
|
||||
}
|
||||
|
||||
pub mod ddd {
|
||||
//~ MONO_ITEM fn incremental_merging::ddd[0]::foo[0] @@ incremental_merging-ddd[External]
|
||||
pub fn foo(a: u64, b: u64, c: u64, d: u64) -> u64 {
|
||||
a + b + c + d + 1
|
||||
}
|
||||
}
|
|
@ -2517,7 +2517,7 @@ impl<'test> TestCx<'test> {
|
|||
.filter(|s| !s.is_empty())
|
||||
.map(|s| {
|
||||
if cgu_has_crate_disambiguator {
|
||||
remove_crate_disambiguator_from_cgu(s)
|
||||
remove_crate_disambiguators_from_set_of_cgu_names(s)
|
||||
} else {
|
||||
s.to_string()
|
||||
}
|
||||
|
@ -2567,6 +2567,16 @@ impl<'test> TestCx<'test> {
|
|||
|
||||
new_name
|
||||
}
|
||||
|
||||
// The name of merged CGUs is constructed as the names of the original
|
||||
// CGUs joined with "--". This function splits such composite CGU names
|
||||
// and handles each component individually.
|
||||
fn remove_crate_disambiguators_from_set_of_cgu_names(cgus: &str) -> String {
|
||||
cgus.split("--")
|
||||
.map(|cgu| remove_crate_disambiguator_from_cgu(cgu))
|
||||
.collect::<Vec<_>>()
|
||||
.join("--")
|
||||
}
|
||||
}
|
||||
|
||||
fn init_incremental_test(&self) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue