Make [rust] use-lld=true
work on windows
Before, it would fail with "error: ignoring unknown argument '-Wl,--icf=all'"
This commit is contained in:
parent
569788e47e
commit
dcead65e48
1 changed files with 6 additions and 1 deletions
|
@ -658,7 +658,12 @@ impl Step for Rustc {
|
||||||
|
|
||||||
// With LLD, we can use ICF (identical code folding) to reduce the executable size
|
// With LLD, we can use ICF (identical code folding) to reduce the executable size
|
||||||
// of librustc_driver/rustc and to improve i-cache utilization.
|
// of librustc_driver/rustc and to improve i-cache utilization.
|
||||||
if builder.config.use_lld {
|
//
|
||||||
|
// -Wl,[link options] doesn't work on MSVC. However, /OPT:ICF (technically /OPT:REF,ICF)
|
||||||
|
// is already on by default in MSVC optimized builds, which is interpreted as --icf=all:
|
||||||
|
// https://github.com/llvm/llvm-project/blob/3329cec2f79185bafd678f310fafadba2a8c76d2/lld/COFF/Driver.cpp#L1746
|
||||||
|
// https://github.com/rust-lang/rust/blob/f22819bcce4abaff7d1246a56eec493418f9f4ee/compiler/rustc_codegen_ssa/src/back/linker.rs#L827
|
||||||
|
if builder.config.use_lld && !compiler.host.contains("msvc") {
|
||||||
cargo.rustflag("-Clink-args=-Wl,--icf=all");
|
cargo.rustflag("-Clink-args=-Wl,--icf=all");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue