diff options
| author | Dylan DPC <dylan.dpc@gmail.com> | 2020-05-15 01:57:17 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-15 01:57:17 +0200 |
| commit | 24cd42781fdf65dcd28e12b48d0ad9895dc29d0d (patch) | |
| tree | e4fcfaa796f36966ba2e94cd8333b7bd6e5302da /src/bootstrap | |
| parent | d01ee6f7f80098bf3550cc46c1a7a24cb83fd762 (diff) | |
| parent | 6c415450fd2e33ec7056805b97475d7ea73eb04c (diff) | |
| download | rust-24cd42781fdf65dcd28e12b48d0ad9895dc29d0d.tar.gz rust-24cd42781fdf65dcd28e12b48d0ad9895dc29d0d.zip | |
Rollup merge of #72146 - Mark-Simulacrum:separate-std-asserts, r=alexcrichton
Provide separate option for std debug asserts On local one-off benchmarking of libcore metadata-only, debug asserts in std are a significant hit (15s to 20s). Provide an option for compiler developers to disable them. A build with a nightly compiler is around 10s, for reference.
Diffstat (limited to 'src/bootstrap')
| -rw-r--r-- | src/bootstrap/builder.rs | 9 | ||||
| -rw-r--r-- | src/bootstrap/config.rs | 6 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 0a5f07c6895..4bc81a7b42d 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -915,7 +915,14 @@ impl<'a> Builder<'a> { .env("RUSTC", self.out.join("bootstrap/debug/rustc")) .env("RUSTC_REAL", self.rustc(compiler)) .env("RUSTC_STAGE", stage.to_string()) - .env("RUSTC_DEBUG_ASSERTIONS", self.config.rust_debug_assertions.to_string()) + .env( + "RUSTC_DEBUG_ASSERTIONS", + if mode == Mode::Std { + self.config.rust_debug_assertions_std.to_string() + } else { + self.config.rust_debug_assertions.to_string() + }, + ) .env("RUSTC_SYSROOT", &sysroot) .env("RUSTC_LIBDIR", &libdir) .env("RUSTDOC", self.out.join("bootstrap/debug/rustdoc")) diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs index 13f88c185ae..771f952abc0 100644 --- a/src/bootstrap/config.rs +++ b/src/bootstrap/config.rs @@ -97,6 +97,7 @@ pub struct Config { pub rust_codegen_units: Option<u32>, pub rust_codegen_units_std: Option<u32>, pub rust_debug_assertions: bool, + pub rust_debug_assertions_std: bool, pub rust_debuginfo_level_rustc: u32, pub rust_debuginfo_level_std: u32, pub rust_debuginfo_level_tools: u32, @@ -314,6 +315,7 @@ struct Rust { codegen_units: Option<u32>, codegen_units_std: Option<u32>, debug_assertions: Option<bool>, + debug_assertions_std: Option<bool>, debuginfo_level: Option<u32>, debuginfo_level_rustc: Option<u32>, debuginfo_level_std: Option<u32>, @@ -518,6 +520,7 @@ impl Config { let mut llvm_assertions = None; let mut debug = None; let mut debug_assertions = None; + let mut debug_assertions_std = None; let mut debuginfo_level = None; let mut debuginfo_level_rustc = None; let mut debuginfo_level_std = None; @@ -560,6 +563,7 @@ impl Config { if let Some(ref rust) = toml.rust { debug = rust.debug; debug_assertions = rust.debug_assertions; + debug_assertions_std = rust.debug_assertions_std; debuginfo_level = rust.debuginfo_level; debuginfo_level_rustc = rust.debuginfo_level_rustc; debuginfo_level_std = rust.debuginfo_level_std; @@ -658,6 +662,8 @@ impl Config { let default = debug == Some(true); config.rust_debug_assertions = debug_assertions.unwrap_or(default); + config.rust_debug_assertions_std = + debug_assertions_std.unwrap_or(config.rust_debug_assertions); let with_defaults = |debuginfo_level_specific: Option<u32>| { debuginfo_level_specific.or(debuginfo_level).unwrap_or(if debug == Some(true) { |
