diff options
| author | bors <bors@rust-lang.org> | 2022-08-05 23:11:49 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-08-05 23:11:49 +0000 |
| commit | 55f46419afd2e49acfc6be176ad4aeadaa5686d7 (patch) | |
| tree | b018496a0be96e9b8b596916bac464e9e0dea0ff | |
| parent | affe0d3a00e92fa7885e3f5d2c5073fde432d154 (diff) | |
| parent | 80c9012e422263a567d217c5699c4d88623afc32 (diff) | |
| download | rust-55f46419afd2e49acfc6be176ad4aeadaa5686d7.tar.gz rust-55f46419afd2e49acfc6be176ad4aeadaa5686d7.zip | |
Auto merge of #100035 - workingjubilee:merge-functions, r=nikic
Enable function merging when opt is for size It is, of course, natural to want to merge aliasing functions when optimizing for code size, since that can eliminate several bytes. And an exhaustive match helps make the code less brittle. Closes #98215.
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/back/write.rs | 7 | ||||
| -rw-r--r-- | src/test/codegen/merge-functions.rs | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs index 1b5ad87107a..dbd55590e5c 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -256,8 +256,11 @@ impl ModuleConfig { { MergeFunctions::Disabled => false, MergeFunctions::Trampolines | MergeFunctions::Aliases => { - sess.opts.optimize == config::OptLevel::Default - || sess.opts.optimize == config::OptLevel::Aggressive + use config::OptLevel::*; + match sess.opts.optimize { + Aggressive | Default | SizeMin | Size => true, + Less | No => false, + } } }, diff --git a/src/test/codegen/merge-functions.rs b/src/test/codegen/merge-functions.rs index 5eefc0f98f1..d6caeeee896 100644 --- a/src/test/codegen/merge-functions.rs +++ b/src/test/codegen/merge-functions.rs @@ -1,7 +1,9 @@ -// compile-flags: -O +// revisions: O Os +//[Os] compile-flags: -Copt-level=s +//[O] compile-flags: -O #![crate_type = "lib"] -// CHECK: @func2 = {{.*}}alias{{.*}}@func1 +// CHECK: @func{{2|1}} = {{.*}}alias{{.*}}@func{{1|2}} #[no_mangle] pub fn func1(c: char) -> bool { |
