Skip to content

Commit 80c9012

Browse files
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.
1 parent b4151a4 commit 80c9012

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

compiler/rustc_codegen_ssa/src/back/write.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,11 @@ impl ModuleConfig {
255255
{
256256
MergeFunctions::Disabled => false,
257257
MergeFunctions::Trampolines | MergeFunctions::Aliases => {
258-
sess.opts.optimize == config::OptLevel::Default
259-
|| sess.opts.optimize == config::OptLevel::Aggressive
258+
use config::OptLevel::*;
259+
match sess.opts.optimize {
260+
Aggressive | Default | SizeMin | Size => true,
261+
Less | No => false,
262+
}
260263
}
261264
},
262265

src/test/codegen/merge-functions.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
// compile-flags: -O
1+
// revisions: O Os
2+
//[Os] compile-flags: -Copt-level=s
3+
//[O] compile-flags: -O
24
#![crate_type = "lib"]
35

4-
// CHECK: @func2 = {{.*}}alias{{.*}}@func1
6+
// CHECK: @func{{2|1}} = {{.*}}alias{{.*}}@func{{1|2}}
57

68
#[no_mangle]
79
pub fn func1(c: char) -> bool {

0 commit comments

Comments
 (0)