mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 15:23:46 +00:00
527c629cd9
After coverage instrumentation and MIR transformations, we can sometimes end up with coverage expressions that always have a value of zero. Any expression operand that refers to an always-zero expression can be replaced with a literal `Operand::Zero`, making the emitted coverage mapping data smaller and simpler. This simplification step is mostly redundant with the simplifications performed inline in `expressions_with_regions`, except that it does a slightly more thorough job in some cases (because it checks for always-zero expressions *after* other simplifications). However, adding this simplification step will then let us greatly simplify that code, without affecting the quality of the emitted coverage maps. |
||
---|---|---|
.. | ||
status-quo | ||
if.cov-map | ||
if.rs | ||
long_and_wide.cov-map | ||
long_and_wide.rs | ||
README.md | ||
trivial.cov-map | ||
trivial.rs |
The tests in ./status-quo
were copied from tests/run-coverage
in order to
capture the current behavior of the instrumentor on non-trivial programs.
The actual mappings have not been closely inspected.
Maintenance note
These tests can be sensitive to small changes in MIR spans or MIR control flow, especially in HIR-to-MIR lowering or MIR optimizations.
If you haven't touched the coverage code directly, and the run-coverage
test
suite still works, then it should usually be OK to just --bless
these
coverage mapping tests as necessary, without worrying too much about the exact
changes.