Rollup merge of #54811 - pnkfelix:issue-24840-separate-bootstrap-default-for-optimize-from-debug-setting, r=nikomatsakis
During rustc bootstrap, make default for `optimize` independent of `debug` It may have taken me three and a half years, but I'm following through on my ["threat"](https://github.com/rust-lang/rust/issues/24840#issuecomment-97911700) Fix #24840
This commit is contained in:
commit
e03db2301e
|
@ -243,19 +243,36 @@
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
[rust]
|
[rust]
|
||||||
|
|
||||||
# Indicates that the build should be optimized for debugging Rust. Note that
|
# Whether or not to optimize the compiler and standard library.
|
||||||
# this is typically not what you want as it takes an incredibly large amount of
|
#
|
||||||
# time to have a debug-mode rustc compile any code (notably libstd). If this
|
|
||||||
# value is set to `true` it will affect a number of configuration options below
|
|
||||||
# as well, if unconfigured.
|
|
||||||
#debug = false
|
|
||||||
|
|
||||||
# Whether or not to optimize the compiler and standard library
|
|
||||||
# Note: the slowness of the non optimized compiler compiling itself usually
|
# Note: the slowness of the non optimized compiler compiling itself usually
|
||||||
# outweighs the time gains in not doing optimizations, therefore a
|
# outweighs the time gains in not doing optimizations, therefore a
|
||||||
# full bootstrap takes much more time with optimize set to false.
|
# full bootstrap takes much more time with `optimize` set to false.
|
||||||
#optimize = true
|
#optimize = true
|
||||||
|
|
||||||
|
# Indicates that the build should be configured for debugging Rust. A
|
||||||
|
# `debug`-enabled compiler and standard library will be somewhat
|
||||||
|
# slower (due to e.g. checking of debug assertions) but should remain
|
||||||
|
# usable.
|
||||||
|
#
|
||||||
|
# Note: If this value is set to `true`, it will affect a number of
|
||||||
|
# configuration options below as well, if they have been left
|
||||||
|
# unconfigured in this file.
|
||||||
|
#
|
||||||
|
# Note: changes to the `debug` setting do *not* affect `optimize`
|
||||||
|
# above. In theory, a "maximally debuggable" environment would
|
||||||
|
# set `optimize` to `false` above to assist the introspection
|
||||||
|
# facilities of debuggers like lldb and gdb. To recreate such an
|
||||||
|
# environment, explicitly set `optimize` to `false` and `debug`
|
||||||
|
# to `true`. In practice, everyone leaves `optimize` set to
|
||||||
|
# `true`, because an unoptimized rustc with debugging
|
||||||
|
# enabled becomes *unusably slow* (e.g. rust-lang/rust#24840
|
||||||
|
# reported a 25x slowdown) and bootstrapping the supposed
|
||||||
|
# "maximally debuggable" environment (notably libstd) takes
|
||||||
|
# hours to build.
|
||||||
|
#
|
||||||
|
#debug = false
|
||||||
|
|
||||||
# Number of codegen units to use for each compiler invocation. A value of 0
|
# Number of codegen units to use for each compiler invocation. A value of 0
|
||||||
# means "the number of cores on this machine", and 1+ is passed through to the
|
# means "the number of cores on this machine", and 1+ is passed through to the
|
||||||
# compiler.
|
# compiler.
|
||||||
|
|
|
@ -628,6 +628,9 @@ impl Config {
|
||||||
let default = false;
|
let default = false;
|
||||||
config.llvm_assertions = llvm_assertions.unwrap_or(default);
|
config.llvm_assertions = llvm_assertions.unwrap_or(default);
|
||||||
|
|
||||||
|
let default = true;
|
||||||
|
config.rust_optimize = optimize.unwrap_or(default);
|
||||||
|
|
||||||
let default = match &config.channel[..] {
|
let default = match &config.channel[..] {
|
||||||
"stable" | "beta" | "nightly" => true,
|
"stable" | "beta" | "nightly" => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
|
@ -640,7 +643,6 @@ impl Config {
|
||||||
config.debug_jemalloc = debug_jemalloc.unwrap_or(default);
|
config.debug_jemalloc = debug_jemalloc.unwrap_or(default);
|
||||||
config.rust_debuginfo = debuginfo.unwrap_or(default);
|
config.rust_debuginfo = debuginfo.unwrap_or(default);
|
||||||
config.rust_debug_assertions = debug_assertions.unwrap_or(default);
|
config.rust_debug_assertions = debug_assertions.unwrap_or(default);
|
||||||
config.rust_optimize = optimize.unwrap_or(!default);
|
|
||||||
|
|
||||||
let default = config.channel == "dev";
|
let default = config.channel == "dev";
|
||||||
config.ignore_git = ignore_git.unwrap_or(default);
|
config.ignore_git = ignore_git.unwrap_or(default);
|
||||||
|
|
Loading…
Reference in New Issue