From 80c9012e422263a567d217c5699c4d88623afc32 Mon Sep 17 00:00:00 2001 From: Jubilee Young Date: Mon, 1 Aug 2022 14:04:14 -0700 Subject: [PATCH] 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. --- compiler/rustc_codegen_ssa/src/back/write.rs | 7 +++++-- 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 ea60f6055f3d5..9657e2af3e6d0 100644 --- a/compiler/rustc_codegen_ssa/src/back/write.rs +++ b/compiler/rustc_codegen_ssa/src/back/write.rs @@ -255,8 +255,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 5eefc0f98f1fe..d6caeeee89669 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 {