mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +00:00
Disable ICF opt of MSVC for non-opt build
This commit is contained in:
parent
c80c31a502
commit
257f643ee3
@ -320,7 +320,16 @@ impl<'a> Linker for MsvcLinker<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn gc_sections(&mut self, _keep_metadata: bool) {
|
fn gc_sections(&mut self, _keep_metadata: bool) {
|
||||||
self.cmd.arg("/OPT:REF,ICF");
|
// MSVC's ICF (Identical COMDAT Folding) link optimization is
|
||||||
|
// slow for Rust and thus we disable it by default when not in
|
||||||
|
// optimization build.
|
||||||
|
if self.sess.opts.optimize != config::OptLevel::No {
|
||||||
|
self.cmd.arg("/OPT:REF,ICF");
|
||||||
|
} else {
|
||||||
|
// It is necessary to specify NOICF here, because /OPT:REF
|
||||||
|
// implies ICF by default.
|
||||||
|
self.cmd.arg("/OPT:REF,NOICF");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn link_dylib(&mut self, lib: &str) {
|
fn link_dylib(&mut self, lib: &str) {
|
||||||
|
@ -25,7 +25,7 @@ all:
|
|||||||
|
|
||||||
# Should not link dead code...
|
# Should not link dead code...
|
||||||
$(RUSTC) -Z print-link-args dummy.rs 2>&1 | \
|
$(RUSTC) -Z print-link-args dummy.rs 2>&1 | \
|
||||||
grep -e '--gc-sections' -e '-dead_strip' -e '/OPT:REF,ICF'
|
grep -e '--gc-sections' -e '-dead_strip' -e '/OPT:REF'
|
||||||
# ... unless you specifically ask to keep it
|
# ... unless you specifically ask to keep it
|
||||||
$(RUSTC) -Z print-link-args -C link-dead-code dummy.rs 2>&1 | \
|
$(RUSTC) -Z print-link-args -C link-dead-code dummy.rs 2>&1 | \
|
||||||
(! grep -e '--gc-sections' -e '-dead_strip' -e '/OPT:REF,ICF')
|
(! grep -e '--gc-sections' -e '-dead_strip' -e '/OPT:REF')
|
||||||
|
Loading…
Reference in New Issue
Block a user