Skip to content
Permalink
Browse files

bootstrap: Allow for setting the ThinLTO import limit used for compil…

…er the compiler.
  • Loading branch information
michaelwoerister committed Dec 20, 2019
1 parent 766fba3 commit 1b7c404d4bf5b28f61da14f84fe73c62862f5963
Showing with 25 additions and 0 deletions.
  1. +7 −0 config.toml.example
  2. +15 −0 src/bootstrap/builder.rs
  3. +3 −0 src/bootstrap/config.rs
@@ -406,6 +406,13 @@
# Whether to verify generated LLVM IR
#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/...`,
# generally only set for releases
#remap-debuginfo = false
@@ -1183,6 +1183,21 @@ impl<'a> Builder<'a> {
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 }
}

@@ -108,6 +108,7 @@ pub struct Config {
pub rust_dist_src: bool,
pub rust_codegen_backends: Vec<Interned<String>>,
pub rust_verify_llvm_ir: bool,
pub rust_thin_lto_import_instr_limit: Option<u32>,
pub rust_remap_debuginfo: bool,

pub build: Interned<String>,
@@ -325,6 +326,7 @@ struct Rust {
deny_warnings: Option<bool>,
backtrace_on_ice: Option<bool>,
verify_llvm_ir: Option<bool>,
thin_lto_import_instr_limit: Option<u32>,
remap_debuginfo: Option<bool>,
jemalloc: 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.backtrace_on_ice, rust.backtrace_on_ice);
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);

if let Some(ref backends) = rust.codegen_backends {

0 comments on commit 1b7c404

Please sign in to comment.
You can’t perform that action at this time.