rust/tests/coverage-map
Zalathar 527c629cd9 coverage: Explicitly simplify coverage expressions in codegen
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.
2023-09-21 18:32:49 +10:00
..
status-quo coverage: Explicitly simplify coverage expressions in codegen 2023-09-21 18:32:49 +10:00
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.