Skip to content

Commit

Permalink
Require -Zunstable-options for -C instrument-coverage=except-* op…
Browse files Browse the repository at this point in the history
…tions

These options primarily exist to work around bugs, and those bugs have
largely been fixed. Avoid stabilizing them, so that we don't have to
support them indefinitely.
  • Loading branch information
joshtriplett committed Jan 2, 2022
1 parent e14bd48 commit 6593fcd
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 8 deletions.
15 changes: 11 additions & 4 deletions compiler/rustc_session/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ pub enum MirSpanview {
/// selected, code structure, and enabled attributes. If errors are encountered,
/// either while compiling or when generating `llvm-cov show` reports, consider
/// lowering the optimization level, including or excluding `-C link-dead-code`,
/// or using `-C instrument-coverage=except-unused-functions` or `-C
/// instrument-coverage=except-unused-generics`.
/// or using `-Zunstable-options -C instrument-coverage=except-unused-functions`
/// or `-Zunstable-options -C instrument-coverage=except-unused-generics`.
///
/// Note that `ExceptUnusedFunctions` means: When `mapgen.rs` generates the
/// coverage map, it will not attempt to generate synthetic functions for unused
Expand All @@ -150,9 +150,9 @@ pub enum MirSpanview {
pub enum InstrumentCoverage {
/// Default `-C instrument-coverage` or `-C instrument-coverage=statement`
All,
/// `-C instrument-coverage=except-unused-generics`
/// `-Zunstable-options -C instrument-coverage=except-unused-generics`
ExceptUnusedGenerics,
/// `-C instrument-coverage=except-unused-functions`
/// `-Zunstable-options -C instrument-coverage=except-unused-functions`
ExceptUnusedFunctions,
/// `-C instrument-coverage=off` (or `no`, etc.)
Off,
Expand Down Expand Up @@ -2154,6 +2154,13 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options {
and `-Z instrument-coverage`",
);
}
(Some(InstrumentCoverage::Off | InstrumentCoverage::All), _) => {}
(Some(_), _) if !debugging_opts.unstable_options => {
early_error(
error_format,
"`-C instrument-coverage=except-*` requires `-Z unstable-options`",
);
}
(None, None) => {}
(None, ic) => {
early_warn(
Expand Down
4 changes: 2 additions & 2 deletions src/doc/rustc/src/instrument-coverage.md
Original file line number Diff line number Diff line change
Expand Up @@ -318,9 +318,9 @@ $ llvm-cov report \
## `-C instrument-coverage=<options>`

- `-C instrument-coverage=all`: Instrument all functions, including unused functions and unused generics. (This is the same as `-C instrument-coverage`, with no value.)
- `-C instrument-coverage=except-unused-generics`: Instrument all functions except unused generics.
- `-C instrument-coverage=except-unused-functions`: Instrument only used (called) functions and instantiated generic functions.
- `-C instrument-coverage=off`: Do not instrument any functions. (This is the same as simply not including the `-C instrument-coverage` option.)
- `-Zunstable-options -C instrument-coverage=except-unused-generics`: Instrument all functions except unused generics.
- `-Zunstable-options -C instrument-coverage=except-unused-functions`: Instrument only used (called) functions and instantiated generic functions.

## Other references

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@
78| |// generic functions with:
79| |//
80| |// ```shell
81| |// $ `rustc -C instrument-coverage=except-unused-generics ...`
81| |// $ `rustc -Zunstable-options -C instrument-coverage=except-unused-generics ...`
82| |// ```
83| |//
84| |// Even though this function is used by `uses_crate.rs` (and
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-make-fulldeps/coverage/lib/used_crate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ fn use_this_lib_crate() {
// generic functions with:
//
// ```shell
// $ `rustc -C instrument-coverage=except-unused-generics ...`
// $ `rustc -Zunstable-options -C instrument-coverage=except-unused-generics ...`
// ```
//
// Even though this function is used by `uses_crate.rs` (and
Expand Down

0 comments on commit 6593fcd

Please sign in to comment.