Introduce -C instrument-coverage=branch
to gate branch coverage
This flag has to be used in combination with `-Zunstable-options`, and is added in advance of adding branch coverage instrumentation.
This commit is contained in:
parent
1322f92634
commit
2b36547e9c
@ -169,6 +169,9 @@ pub enum MirSpanview {
|
||||
pub enum InstrumentCoverage {
|
||||
/// Default `-C instrument-coverage` or `-C instrument-coverage=statement`
|
||||
All,
|
||||
/// Additionally, instrument branches and output branch coverage.
|
||||
/// `-Zunstable-options -C instrument-coverage=branch`
|
||||
Branch,
|
||||
/// `-Zunstable-options -C instrument-coverage=except-unused-generics`
|
||||
ExceptUnusedGenerics,
|
||||
/// `-Zunstable-options -C instrument-coverage=except-unused-functions`
|
||||
@ -2747,7 +2750,10 @@ pub fn build_session_options(
|
||||
}
|
||||
(Some(InstrumentCoverage::Off | InstrumentCoverage::All), _) => {}
|
||||
(Some(_), _) if !unstable_opts.unstable_options => {
|
||||
handler.early_error("`-C instrument-coverage=except-*` requires `-Z unstable-options`");
|
||||
handler.early_error(
|
||||
"`-C instrument-coverage=branch` and `-C instrument-coverage=except-*` \
|
||||
require `-Z unstable-options`",
|
||||
);
|
||||
}
|
||||
(None, None) => {}
|
||||
(None, ic) => {
|
||||
|
@ -389,7 +389,7 @@ mod desc {
|
||||
pub const parse_mir_spanview: &str = "`statement` (default), `terminator`, or `block`";
|
||||
pub const parse_dump_mono_stats: &str = "`markdown` (default) or `json`";
|
||||
pub const parse_instrument_coverage: &str =
|
||||
"`all` (default), `except-unused-generics`, `except-unused-functions`, or `off`";
|
||||
"`all` (default), `branch`, `except-unused-generics`, `except-unused-functions`, or `off`";
|
||||
pub const parse_instrument_xray: &str = "either a boolean (`yes`, `no`, `on`, `off`, etc), or a comma separated list of settings: `always` or `never` (mutually exclusive), `ignore-loops`, `instruction-threshold=N`, `skip-entry`, `skip-exit`";
|
||||
pub const parse_unpretty: &str = "`string` or `string=string`";
|
||||
pub const parse_treat_err_as_bug: &str = "either no value or a non-negative number";
|
||||
@ -931,6 +931,7 @@ pub(crate) fn parse_instrument_coverage(
|
||||
|
||||
*slot = Some(match v {
|
||||
"all" => InstrumentCoverage::All,
|
||||
"branch" => InstrumentCoverage::Branch,
|
||||
"except-unused-generics" | "except_unused_generics" => {
|
||||
InstrumentCoverage::ExceptUnusedGenerics
|
||||
}
|
||||
@ -1356,6 +1357,7 @@ pub(crate) fn parse_dump_solver_proof_tree(
|
||||
reports (note, the compiler build config must include `profiler = true`); \
|
||||
implies `-C symbol-mangling-version=v0`. Optional values are:
|
||||
`=all` (implicit value)
|
||||
`=branch`
|
||||
`=except-unused-generics`
|
||||
`=except-unused-functions`
|
||||
`=off` (default)"),
|
||||
@ -1597,6 +1599,7 @@ pub(crate) fn parse_dump_solver_proof_tree(
|
||||
reports (note, the compiler build config must include `profiler = true`); \
|
||||
implies `-C symbol-mangling-version=v0`. Optional values are:
|
||||
`=all` (implicit value)
|
||||
`=branch`
|
||||
`=except-unused-generics`
|
||||
`=except-unused-functions`
|
||||
`=off` (default)"),
|
||||
|
@ -702,6 +702,10 @@ pub fn instrument_coverage(&self) -> bool {
|
||||
self.opts.cg.instrument_coverage() != InstrumentCoverage::Off
|
||||
}
|
||||
|
||||
pub fn instrument_coverage_branch(&self) -> bool {
|
||||
self.opts.cg.instrument_coverage() == InstrumentCoverage::Branch
|
||||
}
|
||||
|
||||
pub fn instrument_coverage_except_unused_generics(&self) -> bool {
|
||||
self.opts.cg.instrument_coverage() == InstrumentCoverage::ExceptUnusedGenerics
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
error: incorrect value `bad-value` for codegen option `instrument-coverage` - `all` (default), `except-unused-generics`, `except-unused-functions`, or `off` was expected
|
||||
error: incorrect value `bad-value` for codegen option `instrument-coverage` - `all` (default), `branch`, `except-unused-generics`, `except-unused-functions`, or `off` was expected
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
error: incorrect value `` for codegen option `instrument-coverage` - `all` (default), `except-unused-generics`, `except-unused-functions`, or `off` was expected
|
||||
error: incorrect value `` for codegen option `instrument-coverage` - `all` (default), `branch`, `except-unused-generics`, `except-unused-functions`, or `off` was expected
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
error: `-C instrument-coverage=except-*` requires `-Z unstable-options`
|
||||
error: `-C instrument-coverage=branch` and `-C instrument-coverage=except-*` require `-Z unstable-options`
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
error: `-C instrument-coverage=except-*` requires `-Z unstable-options`
|
||||
error: `-C instrument-coverage=branch` and `-C instrument-coverage=except-*` require `-Z unstable-options`
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user