rust/compiler/rustc_interface/src
Matthias Krüger 8b9ef3b996
Rollup merge of #122226 - Zalathar:zcoverage-options, r=nnethercote
coverage: Remove or migrate all unstable values of `-Cinstrument-coverage`

(This PR was substantially overhauled from its original version, which migrated all of the existing unstable values intact.)

This PR takes the three nightly-only values that are currently accepted by `-Cinstrument-coverage`, completely removes two of them (`except-unused-functions` and `except-unused-generics`), and migrates the third (`branch`) over to a newly-introduced unstable flag `-Zcoverage-options`.

I have a few motivations for wanting to do this:

- It's unclear whether anyone actually uses the `except-unused-*` values, so this serves as an opportunity to either remove them, or prompt existing users to object to their removal.
- After #117199, the stable values of `-Cinstrument-coverage` treat it as a boolean-valued flag, so having nightly-only extra values feels out-of-place.
  - Nightly-only values also require extra ad-hoc code to make sure they aren't accidentally exposed to stable users.
- The new system allows multiple different settings to be toggled independently, which isn't possible in the current single-value system.
- The new system makes it easier to introduce new behaviour behind an unstable toggle, and then gather nightly-user feedback before possibly making it the default behaviour for all users.
- The new system also gives us a convenient place to put relatively-narrow options that won't ever be the default, but that nightly users might still want access to.
- It's likely that we will eventually want to give stable users more fine-grained control over coverage instrumentation. The new flag serves as a prototype of what that stable UI might eventually look like.

The `branch` option is a placeholder that currently does nothing. It will be used by #122322 to opt into branch coverage instrumentation.

---

I see `-Zcoverage-options` as something that will exist more-or-less indefinitely, though individual sub-options might come and go as appropriate. I think there will always be some demand for nightly-only toggles, so I don't see `-Zcoverage-options` itself ever being stable, though we might eventually stabilize something similar to it.
2024-03-13 06:41:22 +01:00
..
callbacks.rs Rename Diagnostic as DiagInner. 2024-02-28 08:33:25 +11:00
errors.rs Write to stdout if - is given as output file 2023-06-06 17:53:29 -04:00
interface.rs Rollup merge of #116793 - WaffleLapkin:target_rules_the_backend, r=cjgillot 2024-03-11 09:29:32 -07:00
lib.rs Unify dylib loading between proc macros and codegen backends 2024-02-21 11:17:07 +00:00
passes.rs Run a single huge par_body_owners instead of many small ones after each other. 2024-03-11 08:48:03 +00:00
proc_macro_decls.rs Move expansion of query macros in rustc_middle to rustc_middle::query 2023-05-15 08:49:13 +02:00
queries.rs Verify that query keys result in unique dep nodes 2024-03-12 05:31:41 +01:00
tests.rs coverage: Add -Zcoverage-options for fine control of coverage 2024-03-13 11:14:10 +11:00
util.rs Rollup merge of #116793 - WaffleLapkin:target_rules_the_backend, r=cjgillot 2024-03-11 09:29:32 -07:00