bootstrap: Allow for setting the ThinLTO import limit used for compiler the compiler.
This commit is contained in:
parent
766fba3fdc
commit
1b7c404d4b
3 changed files with 25 additions and 0 deletions
|
@ -406,6 +406,13 @@
|
||||||
# Whether to verify generated LLVM IR
|
# Whether to verify generated LLVM IR
|
||||||
#verify-llvm-ir = false
|
#verify-llvm-ir = false
|
||||||
|
|
||||||
|
# Compile the compiler with a non-default ThinLTO import limit. This import
|
||||||
|
# limit controls the maximum size of functions imported by ThinLTO. Decreasing
|
||||||
|
# will make code compile faster at the expense of lower runtime performance.
|
||||||
|
# If `incremental` is set to true above, the import limit will default to 10
|
||||||
|
# instead of LLVM's default of 100.
|
||||||
|
#thin-lto-import-instr-limit = 100
|
||||||
|
|
||||||
# Map all debuginfo paths for libstd and crates to `/rust/$sha/$crate/...`,
|
# Map all debuginfo paths for libstd and crates to `/rust/$sha/$crate/...`,
|
||||||
# generally only set for releases
|
# generally only set for releases
|
||||||
#remap-debuginfo = false
|
#remap-debuginfo = false
|
||||||
|
|
|
@ -1183,6 +1183,21 @@ impl<'a> Builder<'a> {
|
||||||
rustflags.arg("-Cprefer-dynamic");
|
rustflags.arg("-Cprefer-dynamic");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When building incrementally we default to a lower ThinLTO import limit
|
||||||
|
// (unless explicitly specified otherwise). This will produce a somewhat
|
||||||
|
// slower code but give way better compile times.
|
||||||
|
{
|
||||||
|
let limit = match self.config.rust_thin_lto_import_instr_limit {
|
||||||
|
Some(limit) => Some(limit),
|
||||||
|
None if self.config.incremental => Some(10),
|
||||||
|
_ => None,
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Some(limit) = limit {
|
||||||
|
rustflags.arg(&format!("-Cllvm-args=-import-instr-limit={}", limit));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Cargo { command: cargo, rustflags }
|
Cargo { command: cargo, rustflags }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,6 +108,7 @@ pub struct Config {
|
||||||
pub rust_dist_src: bool,
|
pub rust_dist_src: bool,
|
||||||
pub rust_codegen_backends: Vec<Interned<String>>,
|
pub rust_codegen_backends: Vec<Interned<String>>,
|
||||||
pub rust_verify_llvm_ir: bool,
|
pub rust_verify_llvm_ir: bool,
|
||||||
|
pub rust_thin_lto_import_instr_limit: Option<u32>,
|
||||||
pub rust_remap_debuginfo: bool,
|
pub rust_remap_debuginfo: bool,
|
||||||
|
|
||||||
pub build: Interned<String>,
|
pub build: Interned<String>,
|
||||||
|
@ -325,6 +326,7 @@ struct Rust {
|
||||||
deny_warnings: Option<bool>,
|
deny_warnings: Option<bool>,
|
||||||
backtrace_on_ice: Option<bool>,
|
backtrace_on_ice: Option<bool>,
|
||||||
verify_llvm_ir: Option<bool>,
|
verify_llvm_ir: Option<bool>,
|
||||||
|
thin_lto_import_instr_limit: Option<u32>,
|
||||||
remap_debuginfo: Option<bool>,
|
remap_debuginfo: Option<bool>,
|
||||||
jemalloc: Option<bool>,
|
jemalloc: Option<bool>,
|
||||||
test_compare_mode: Option<bool>,
|
test_compare_mode: Option<bool>,
|
||||||
|
@ -569,6 +571,7 @@ impl Config {
|
||||||
set(&mut config.deny_warnings, flags.deny_warnings.or(rust.deny_warnings));
|
set(&mut config.deny_warnings, flags.deny_warnings.or(rust.deny_warnings));
|
||||||
set(&mut config.backtrace_on_ice, rust.backtrace_on_ice);
|
set(&mut config.backtrace_on_ice, rust.backtrace_on_ice);
|
||||||
set(&mut config.rust_verify_llvm_ir, rust.verify_llvm_ir);
|
set(&mut config.rust_verify_llvm_ir, rust.verify_llvm_ir);
|
||||||
|
config.rust_thin_lto_import_instr_limit = rust.thin_lto_import_instr_limit;
|
||||||
set(&mut config.rust_remap_debuginfo, rust.remap_debuginfo);
|
set(&mut config.rust_remap_debuginfo, rust.remap_debuginfo);
|
||||||
|
|
||||||
if let Some(ref backends) = rust.codegen_backends {
|
if let Some(ref backends) = rust.codegen_backends {
|
||||||
|
|
Loading…
Add table
Reference in a new issue