Update docs for -Clink-dead-code to discourage its use by Zalathar · Pull Request #135561 · rust-lang/rust (original) (raw)

The -Clink-dead-code flag was originally added way back in #31368, apparently to help improve the output of some older forms of code coverage measurement, and also to address some use-cases for wanting to suppress linker flags like -dead_strip and --gc-section.

In the past it might have also been useful in conjunction with -Cinstrument-coverage, but subsequent improvements to coverage instrumentation have made it unnecessary there.

It is also currently used by cargo-fuzz by default, for reasons that are possibly no longer relevant.


The flag currently does more than its name suggests, affecting not just linker flags, but also monomorphization decisions. It has also contributed to ICEs (e.g. #135515) that would not have occurred without link-dead-code.


For now, this PR just updates the documentation to be more realistic about what the flag does, and when it should be used (approximately never). In the future, it might be worth looking into properly deprecating this flag, and perhaps making it a no-op if feasible.