1
Fork 0
rust/compiler/rustc_mir_build/src
Matthias Krüger 7667a91778
Rollup merge of #125756 - Zalathar:branch-on-bool, r=oli-obk
coverage: Optionally instrument the RHS of lazy logical operators

(This is an updated version of #124644 and #124402. Fixes #124120.)

When `||` or `&&` is used outside of a branching context (such as the condition of an `if`), the rightmost value does not directly influence any branching decision, so branch coverage instrumentation does not treat it as its own true-or-false branch.

That is a correct and useful interpretation of “branch coverage”, but might be undesirable in some contexts, as described at #124120. This PR therefore adds a new coverage level `-Zcoverage-options=condition` that behaves like branch coverage, but also adds additional branch instrumentation to the right-hand-side of lazy boolean operators.

---

As discussed at https://github.com/rust-lang/rust/issues/124120#issuecomment-2092394586, this is mainly intended as an intermediate step towards fully-featured MC/DC instrumentation. It's likely that we'll eventually want to remove this coverage level (rather than stabilize it), either because it has been incorporated into MC/DC instrumentation, or because it's getting in the way of future MC/DC work. The main appeal of landing it now is so that work on tracking conditions can proceed concurrently with other MC/DC-related work.

````@rustbot```` label +A-code-coverage
2024-05-31 17:05:24 +02:00
..
build Rollup merge of #125756 - Zalathar:branch-on-bool, r=oli-obk 2024-05-31 17:05:24 +02:00
thir Make body_owned_by return the body directly. 2024-05-29 10:04:08 +00:00
check_unsafety.rs Add deprecated_safe lint 2024-05-30 00:20:48 +02:00
errors.rs Auto merge of #124636 - tbu-:pr_env_unsafe, r=petrochenkov 2024-05-30 12:17:06 +00:00
lib.rs Remove #[macro_use] extern crate tracing from rustc_mir_build. 2024-05-23 18:02:40 +10:00
lints.rs Change InlineAsm to allow multiple targets instead 2024-02-24 18:50:09 +00:00