Skip to content

Commit c3e21a2

Browse files
Rollup merge of rust-lang#135439 - clubby789:O3, r=Noratrieb
Make `-O` mean `OptLevel::Aggressive` Implementation of this MCP: rust-lang/compiler-team#828, changing the meaning of `-O` from `-Copt-level=2` to `-Copt-level=3`. This also renames `OptLevel::Default` to `OptLevel::More`, as `Default` no longer makes sense.
2 parents a567209 + 2966256 commit c3e21a2

File tree

13 files changed

+39
-34
lines changed

13 files changed

+39
-34
lines changed

compiler/rustc_codegen_cranelift/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ fn build_isa(sess: &Session) -> Arc<dyn TargetIsa + 'static> {
289289
flags_builder.set("opt_level", "none").unwrap();
290290
}
291291
OptLevel::Less
292-
| OptLevel::Default
292+
| OptLevel::More
293293
| OptLevel::Size
294294
| OptLevel::SizeMin
295295
| OptLevel::Aggressive => {

compiler/rustc_codegen_gcc/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ fn to_gcc_opt_level(optlevel: Option<OptLevel>) -> OptimizationLevel {
476476
Some(level) => match level {
477477
OptLevel::No => OptimizationLevel::None,
478478
OptLevel::Less => OptimizationLevel::Limited,
479-
OptLevel::Default => OptimizationLevel::Standard,
479+
OptLevel::More => OptimizationLevel::Standard,
480480
OptLevel::Aggressive => OptimizationLevel::Aggressive,
481481
OptLevel::Size | OptLevel::SizeMin => OptimizationLevel::Limited,
482482
},

compiler/rustc_codegen_llvm/src/back/write.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ fn to_llvm_opt_settings(cfg: config::OptLevel) -> (llvm::CodeGenOptLevel, llvm::
141141
match cfg {
142142
No => (llvm::CodeGenOptLevel::None, llvm::CodeGenOptSizeNone),
143143
Less => (llvm::CodeGenOptLevel::Less, llvm::CodeGenOptSizeNone),
144-
Default => (llvm::CodeGenOptLevel::Default, llvm::CodeGenOptSizeNone),
144+
More => (llvm::CodeGenOptLevel::Default, llvm::CodeGenOptSizeNone),
145145
Aggressive => (llvm::CodeGenOptLevel::Aggressive, llvm::CodeGenOptSizeNone),
146146
Size => (llvm::CodeGenOptLevel::Default, llvm::CodeGenOptSizeDefault),
147147
SizeMin => (llvm::CodeGenOptLevel::Default, llvm::CodeGenOptSizeAggressive),
@@ -153,7 +153,7 @@ fn to_pass_builder_opt_level(cfg: config::OptLevel) -> llvm::PassBuilderOptLevel
153153
match cfg {
154154
No => llvm::PassBuilderOptLevel::O0,
155155
Less => llvm::PassBuilderOptLevel::O1,
156-
Default => llvm::PassBuilderOptLevel::O2,
156+
More => llvm::PassBuilderOptLevel::O2,
157157
Aggressive => llvm::PassBuilderOptLevel::O3,
158158
Size => llvm::PassBuilderOptLevel::Os,
159159
SizeMin => llvm::PassBuilderOptLevel::Oz,

compiler/rustc_codegen_ssa/src/back/linker.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ impl<'a> GccLinker<'a> {
410410
let opt_level = match self.sess.opts.optimize {
411411
config::OptLevel::No => "O0",
412412
config::OptLevel::Less => "O1",
413-
config::OptLevel::Default | config::OptLevel::Size | config::OptLevel::SizeMin => "O2",
413+
config::OptLevel::More | config::OptLevel::Size | config::OptLevel::SizeMin => "O2",
414414
config::OptLevel::Aggressive => "O3",
415415
};
416416

@@ -685,7 +685,7 @@ impl<'a> Linker for GccLinker<'a> {
685685

686686
// GNU-style linkers support optimization with -O. GNU ld doesn't
687687
// need a numeric argument, but other linkers do.
688-
if self.sess.opts.optimize == config::OptLevel::Default
688+
if self.sess.opts.optimize == config::OptLevel::More
689689
|| self.sess.opts.optimize == config::OptLevel::Aggressive
690690
{
691691
self.link_arg("-O1");
@@ -1213,7 +1213,7 @@ impl<'a> Linker for EmLinker<'a> {
12131213
self.cc_arg(match self.sess.opts.optimize {
12141214
OptLevel::No => "-O0",
12151215
OptLevel::Less => "-O1",
1216-
OptLevel::Default => "-O2",
1216+
OptLevel::More => "-O2",
12171217
OptLevel::Aggressive => "-O3",
12181218
OptLevel::Size => "-Os",
12191219
OptLevel::SizeMin => "-Oz",
@@ -1384,7 +1384,7 @@ impl<'a> Linker for WasmLd<'a> {
13841384
self.link_arg(match self.sess.opts.optimize {
13851385
OptLevel::No => "-O0",
13861386
OptLevel::Less => "-O1",
1387-
OptLevel::Default => "-O2",
1387+
OptLevel::More => "-O2",
13881388
OptLevel::Aggressive => "-O3",
13891389
// Currently LLD doesn't support `Os` and `Oz`, so pass through `O2`
13901390
// instead.
@@ -1451,7 +1451,7 @@ impl<'a> WasmLd<'a> {
14511451
let opt_level = match self.sess.opts.optimize {
14521452
config::OptLevel::No => "O0",
14531453
config::OptLevel::Less => "O1",
1454-
config::OptLevel::Default => "O2",
1454+
config::OptLevel::More => "O2",
14551455
config::OptLevel::Aggressive => "O3",
14561456
// wasm-ld only handles integer LTO opt levels. Use O2
14571457
config::OptLevel::Size | config::OptLevel::SizeMin => "O2",
@@ -1525,7 +1525,7 @@ impl<'a> Linker for L4Bender<'a> {
15251525
fn optimize(&mut self) {
15261526
// GNU-style linkers support optimization with -O. GNU ld doesn't
15271527
// need a numeric argument, but other linkers do.
1528-
if self.sess.opts.optimize == config::OptLevel::Default
1528+
if self.sess.opts.optimize == config::OptLevel::More
15291529
|| self.sess.opts.optimize == config::OptLevel::Aggressive
15301530
{
15311531
self.link_arg("-O1");
@@ -1929,7 +1929,7 @@ impl<'a> Linker for LlbcLinker<'a> {
19291929
match self.sess.opts.optimize {
19301930
OptLevel::No => "-O0",
19311931
OptLevel::Less => "-O1",
1932-
OptLevel::Default => "-O2",
1932+
OptLevel::More => "-O2",
19331933
OptLevel::Aggressive => "-O3",
19341934
OptLevel::Size => "-Os",
19351935
OptLevel::SizeMin => "-Oz",
@@ -2006,7 +2006,7 @@ impl<'a> Linker for BpfLinker<'a> {
20062006
self.link_arg(match self.sess.opts.optimize {
20072007
OptLevel::No => "-O0",
20082008
OptLevel::Less => "-O1",
2009-
OptLevel::Default => "-O2",
2009+
OptLevel::More => "-O2",
20102010
OptLevel::Aggressive => "-O3",
20112011
OptLevel::Size => "-Os",
20122012
OptLevel::SizeMin => "-Oz",

compiler/rustc_codegen_ssa/src/back/write.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ impl ModuleConfig {
236236
// Copy what clang does by turning on loop vectorization at O2 and
237237
// slp vectorization at O3.
238238
vectorize_loop: !sess.opts.cg.no_vectorize_loops
239-
&& (sess.opts.optimize == config::OptLevel::Default
239+
&& (sess.opts.optimize == config::OptLevel::More
240240
|| sess.opts.optimize == config::OptLevel::Aggressive),
241241
vectorize_slp: !sess.opts.cg.no_vectorize_slp
242242
&& sess.opts.optimize == config::OptLevel::Aggressive,
@@ -260,7 +260,7 @@ impl ModuleConfig {
260260
MergeFunctions::Trampolines | MergeFunctions::Aliases => {
261261
use config::OptLevel::*;
262262
match sess.opts.optimize {
263-
Aggressive | Default | SizeMin | Size => true,
263+
Aggressive | More | SizeMin | Size => true,
264264
Less | No => false,
265265
}
266266
}

compiler/rustc_codegen_ssa/src/base.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1054,12 +1054,12 @@ pub(crate) fn provide(providers: &mut Providers) {
10541054
config::OptLevel::No => return config::OptLevel::No,
10551055
// If globally optimise-speed is already specified, just use that level.
10561056
config::OptLevel::Less => return config::OptLevel::Less,
1057-
config::OptLevel::Default => return config::OptLevel::Default,
1057+
config::OptLevel::More => return config::OptLevel::More,
10581058
config::OptLevel::Aggressive => return config::OptLevel::Aggressive,
10591059
// If globally optimize-for-size has been requested, use -O2 instead (if optimize(size)
10601060
// are present).
1061-
config::OptLevel::Size => config::OptLevel::Default,
1062-
config::OptLevel::SizeMin => config::OptLevel::Default,
1061+
config::OptLevel::Size => config::OptLevel::More,
1062+
config::OptLevel::SizeMin => config::OptLevel::More,
10631063
};
10641064

10651065
let defids = tcx.collect_and_partition_mono_items(cratenum).all_mono_items;

compiler/rustc_mir_transform/src/inline.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ impl<'tcx> crate::MirPass<'tcx> for Inline {
4949
match sess.mir_opt_level() {
5050
0 | 1 => false,
5151
2 => {
52-
(sess.opts.optimize == OptLevel::Default
53-
|| sess.opts.optimize == OptLevel::Aggressive)
52+
(sess.opts.optimize == OptLevel::More || sess.opts.optimize == OptLevel::Aggressive)
5453
&& sess.opts.incremental == None
5554
}
5655
_ => true,

compiler/rustc_session/src/config.rs

+16-10
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,18 @@ pub enum CFProtection {
8686

8787
#[derive(Clone, Copy, Debug, PartialEq, Hash, HashStable_Generic)]
8888
pub enum OptLevel {
89-
No, // -O0
90-
Less, // -O1
91-
Default, // -O2
92-
Aggressive, // -O3
93-
Size, // -Os
94-
SizeMin, // -Oz
89+
/// `-Copt-level=0`
90+
No,
91+
/// `-Copt-level=1`
92+
Less,
93+
/// `-Copt-level=2`
94+
More,
95+
/// `-Copt-level=3` / `-O`
96+
Aggressive,
97+
/// `-Copt-level=s`
98+
Size,
99+
/// `-Copt-level=z`
100+
SizeMin,
95101
}
96102

97103
/// This is what the `LtoCli` values get mapped to after resolving defaults and
@@ -1253,7 +1259,7 @@ impl Options {
12531259
Some(setting) => setting,
12541260
None => match self.optimize {
12551261
OptLevel::No | OptLevel::Less | OptLevel::Size | OptLevel::SizeMin => true,
1256-
OptLevel::Default | OptLevel::Aggressive => false,
1262+
OptLevel::More | OptLevel::Aggressive => false,
12571263
},
12581264
}
12591265
}
@@ -1572,7 +1578,7 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
15721578
stack-protector-strategies|link-args|deployment-target]",
15731579
),
15741580
opt(Stable, FlagMulti, "g", "", "Equivalent to -C debuginfo=2", ""),
1575-
opt(Stable, FlagMulti, "O", "", "Equivalent to -C opt-level=2", ""),
1581+
opt(Stable, FlagMulti, "O", "", "Equivalent to -C opt-level=3", ""),
15761582
opt(Stable, Opt, "o", "", "Write output to <filename>", "FILENAME"),
15771583
opt(Stable, Opt, "", "out-dir", "Write output to compiler-chosen filename in <dir>", "DIR"),
15781584
opt(
@@ -2127,12 +2133,12 @@ fn parse_opt_level(
21272133
})
21282134
.max();
21292135
if max_o > max_c {
2130-
OptLevel::Default
2136+
OptLevel::Aggressive
21312137
} else {
21322138
match cg.opt_level.as_ref() {
21332139
"0" => OptLevel::No,
21342140
"1" => OptLevel::Less,
2135-
"2" => OptLevel::Default,
2141+
"2" => OptLevel::More,
21362142
"3" => OptLevel::Aggressive,
21372143
"s" => OptLevel::Size,
21382144
"z" => OptLevel::SizeMin,

src/doc/rustc/src/codegen-options/index.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ This flag controls the optimization level.
368368
* `s`: optimize for binary size.
369369
* `z`: optimize for binary size, but also turn off loop vectorization.
370370

371-
Note: The [`-O` flag][option-o-optimize] is an alias for `-C opt-level=2`.
371+
Note: The [`-O` flag][option-o-optimize] is an alias for `-C opt-level=3`.
372372

373373
The default is `0`.
374374

src/doc/rustc/src/command-line-arguments.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ A synonym for [`-C debuginfo=2`](codegen-options/index.md#debuginfo).
308308
<a id="option-o-optimize"></a>
309309
## `-O`: optimize your code
310310

311-
A synonym for [`-C opt-level=2`](codegen-options/index.md#opt-level).
311+
A synonym for [`-C opt-level=3`](codegen-options/index.md#opt-level).
312312

313313
<a id="option-o-output"></a>
314314
## `-o`: filename of the output

src/tools/run-make-support/src/external_deps/rustc.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ impl Rustc {
8484
self
8585
}
8686

87-
/// Specify default optimization level `-O` (alias for `-C opt-level=2`).
87+
/// Specify default optimization level `-O` (alias for `-C opt-level=3`).
8888
pub fn opt(&mut self) -> &mut Self {
8989
self.cmd.arg("-O");
9090
self

tests/run-make/rustc-help/help-v.stdout

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Options:
3232
--print [crate-name|file-names|sysroot|target-libdir|cfg|check-cfg|calling-conventions|target-list|target-cpus|target-features|relocation-models|code-models|tls-models|target-spec-json|all-target-specs-json|native-static-libs|stack-protector-strategies|link-args|deployment-target]
3333
Compiler information to print on stdout
3434
-g Equivalent to -C debuginfo=2
35-
-O Equivalent to -C opt-level=2
35+
-O Equivalent to -C opt-level=3
3636
-o FILENAME Write output to <filename>
3737
--out-dir DIR Write output to compiler-chosen filename in <dir>
3838
--explain OPT Provide a detailed explanation of an error message

tests/run-make/rustc-help/help.stdout

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Options:
3232
--print [crate-name|file-names|sysroot|target-libdir|cfg|check-cfg|calling-conventions|target-list|target-cpus|target-features|relocation-models|code-models|tls-models|target-spec-json|all-target-specs-json|native-static-libs|stack-protector-strategies|link-args|deployment-target]
3333
Compiler information to print on stdout
3434
-g Equivalent to -C debuginfo=2
35-
-O Equivalent to -C opt-level=2
35+
-O Equivalent to -C opt-level=3
3636
-o FILENAME Write output to <filename>
3737
--out-dir DIR Write output to compiler-chosen filename in <dir>
3838
--explain OPT Provide a detailed explanation of an error message

0 commit comments

Comments
 (0)