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
7 changed files with 19 additions and 6 deletions
|
@ -169,6 +169,9 @@ pub enum MirSpanview {
|
||||||
pub enum InstrumentCoverage {
|
pub enum InstrumentCoverage {
|
||||||
/// Default `-C instrument-coverage` or `-C instrument-coverage=statement`
|
/// Default `-C instrument-coverage` or `-C instrument-coverage=statement`
|
||||||
All,
|
All,
|
||||||
|
/// Additionally, instrument branches and output branch coverage.
|
||||||
|
/// `-Zunstable-options -C instrument-coverage=branch`
|
||||||
|
Branch,
|
||||||
/// `-Zunstable-options -C instrument-coverage=except-unused-generics`
|
/// `-Zunstable-options -C instrument-coverage=except-unused-generics`
|
||||||
ExceptUnusedGenerics,
|
ExceptUnusedGenerics,
|
||||||
/// `-Zunstable-options -C instrument-coverage=except-unused-functions`
|
/// `-Zunstable-options -C instrument-coverage=except-unused-functions`
|
||||||
|
@ -2747,7 +2750,10 @@ pub fn build_session_options(
|
||||||
}
|
}
|
||||||
(Some(InstrumentCoverage::Off | InstrumentCoverage::All), _) => {}
|
(Some(InstrumentCoverage::Off | InstrumentCoverage::All), _) => {}
|
||||||
(Some(_), _) if !unstable_opts.unstable_options => {
|
(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, None) => {}
|
||||||
(None, ic) => {
|
(None, ic) => {
|
||||||
|
|
|
@ -389,7 +389,7 @@ mod desc {
|
||||||
pub const parse_mir_spanview: &str = "`statement` (default), `terminator`, or `block`";
|
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_dump_mono_stats: &str = "`markdown` (default) or `json`";
|
||||||
pub const parse_instrument_coverage: &str =
|
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_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_unpretty: &str = "`string` or `string=string`";
|
||||||
pub const parse_treat_err_as_bug: &str = "either no value or a non-negative number";
|
pub const parse_treat_err_as_bug: &str = "either no value or a non-negative number";
|
||||||
|
@ -931,6 +931,7 @@ mod parse {
|
||||||
|
|
||||||
*slot = Some(match v {
|
*slot = Some(match v {
|
||||||
"all" => InstrumentCoverage::All,
|
"all" => InstrumentCoverage::All,
|
||||||
|
"branch" => InstrumentCoverage::Branch,
|
||||||
"except-unused-generics" | "except_unused_generics" => {
|
"except-unused-generics" | "except_unused_generics" => {
|
||||||
InstrumentCoverage::ExceptUnusedGenerics
|
InstrumentCoverage::ExceptUnusedGenerics
|
||||||
}
|
}
|
||||||
|
@ -1356,6 +1357,7 @@ options! {
|
||||||
reports (note, the compiler build config must include `profiler = true`); \
|
reports (note, the compiler build config must include `profiler = true`); \
|
||||||
implies `-C symbol-mangling-version=v0`. Optional values are:
|
implies `-C symbol-mangling-version=v0`. Optional values are:
|
||||||
`=all` (implicit value)
|
`=all` (implicit value)
|
||||||
|
`=branch`
|
||||||
`=except-unused-generics`
|
`=except-unused-generics`
|
||||||
`=except-unused-functions`
|
`=except-unused-functions`
|
||||||
`=off` (default)"),
|
`=off` (default)"),
|
||||||
|
@ -1597,6 +1599,7 @@ options! {
|
||||||
reports (note, the compiler build config must include `profiler = true`); \
|
reports (note, the compiler build config must include `profiler = true`); \
|
||||||
implies `-C symbol-mangling-version=v0`. Optional values are:
|
implies `-C symbol-mangling-version=v0`. Optional values are:
|
||||||
`=all` (implicit value)
|
`=all` (implicit value)
|
||||||
|
`=branch`
|
||||||
`=except-unused-generics`
|
`=except-unused-generics`
|
||||||
`=except-unused-functions`
|
`=except-unused-functions`
|
||||||
`=off` (default)"),
|
`=off` (default)"),
|
||||||
|
|
|
@ -702,6 +702,10 @@ impl Session {
|
||||||
self.opts.cg.instrument_coverage() != InstrumentCoverage::Off
|
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 {
|
pub fn instrument_coverage_except_unused_generics(&self) -> bool {
|
||||||
self.opts.cg.instrument_coverage() == InstrumentCoverage::ExceptUnusedGenerics
|
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…
Add table
Add a link
Reference in a new issue