]> git.lizzy.rs Git - rust.git/commitdiff
Require `-Zunstable-options` for `-C instrument-coverage=except-*` options
authorJosh Triplett <josh@joshtriplett.org>
Sun, 2 Jan 2022 00:15:36 +0000 (16:15 -0800)
committerJosh Triplett <josh@joshtriplett.org>
Sun, 2 Jan 2022 00:15:36 +0000 (16:15 -0800)
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.

compiler/rustc_session/src/config.rs
src/doc/rustc/src/instrument-coverage.md
src/test/run-make-fulldeps/coverage-reports/expected_show_coverage.uses_crate.txt
src/test/run-make-fulldeps/coverage/lib/used_crate.rs

index fa14a95bb0c2a6e98d30e60b41c6617cc1ab05a8..7e8e4a75b37e6dfa93655d88b28a8f8688303654 100644 (file)
@@ -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
@@ -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,
@@ -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(
index 49ef2309e73ca89299280d2a2430ebe1932f9a97..b94989161ccfc6bc7099f018d275e545954b8e79 100644 (file)
@@ -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
 
index 8d6a9eb902c17c1e3f4975b539e6dae995b08895..96c066e0623dda31f14b274750270450e92fdccd 100644 (file)
    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
index 9c3b147ac59fe717c593a0040767e8722f51fcaf..8b8b1f7f351fd7d9a1905562450313b2354efaaa 100644 (file)
@@ -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