rust/tests
Guillaume Gomez 3b82d4640a
Rollup merge of #139966 - Zalathar:span-merge, r=oli-obk
coverage: Only merge adjacent coverage spans

For a long time, coverage instrumentation has automatically “merged” spans with the same control-flow into a smaller number of larger spans, even when the spans being merged are not overlapping or adjacent. This causes any source text between the original spans to be included in the merged span, which is then associated with an execution count when shown in coverage reports.

That approach causes a number of problems:
- The intervening source text can contain all sorts of things that shouldn't really be marked as executable code (e.g. nested items, parts of macro invocations, long comments). In some cases we have complicated workarounds (e.g. bucketing to avoid merging spans across nested items), but in other cases there isn't much we can do.
- Merging can have aesthetically weird effects, such as including unbalanced parentheses, because the merging process doesn't really understand what it's doing at a source code level.
- It generally leads to an accumulation of piled-on heuristics and special cases that give decent-looking results, but are fiendishly difficult to modify or replace.

Therefore, this PR aims to abolish the merging of non-adjacent coverage spans.

The big tradeoff here is that the resulting coverage metadata (embedded in the instrumented binary) tends to become larger, because the overall number of distinct spans has increased. That's unfortunate, but I see it as the inevitable cost of cleaning up the messes and inaccuracies that were caused by the old approach. And the resulting spans do tend to be more accurate to the program's actual control-flow.

---

The `.coverage` snapshot changes give an indication of how this PR will affect user-visible coverage reports. In many cases the changes to reporting are minor or even nonexistent, despite substantial changes to the metadata (as indicated by `.cov-map` snapshots).

---

try-job: aarch64-gnu
2025-05-06 19:27:39 +02:00
..
assembly Rollup merge of #140194 - jieyouxu:minicore-force-unwind-tables, r=bjorn3 2025-04-24 11:40:42 +02:00
auxiliary stabilize naked_functions 2025-04-20 11:18:38 +02:00
codegen Rollup merge of #140457 - fneddy:fix_s390x_codegen_const_vector, r=Mark-Simulacrum 2025-05-04 18:11:48 -04:00
codegen-units
coverage coverage: Only merge adjacent coverage spans 2025-05-06 20:42:25 +10:00
coverage-run-rustdoc Update coverage-run-rustdoc output 2025-03-28 10:35:53 +01:00
crashes Be a bit more relaxed about not yet constrained infer vars in closure upvar analysis 2025-05-05 19:06:45 +00:00
debuginfo Rollup merge of #138599 - adwinwhite:recursive-overflow, r=wesleywiser 2025-04-18 05:17:53 +02:00
incremental compiletest: Support matching on non-json lines in compiler output 2025-05-04 18:27:45 +03:00
mir-opt coverage: Only merge adjacent coverage spans 2025-05-06 20:42:25 +10:00
pretty Improve hir pretty-printing of attributes. 2025-05-03 12:46:48 +10:00
run-make Rollup merge of #139550 - Urgau:rmeta-remap-path-scope, r=nnethercote 2025-05-06 16:28:38 +10:00
rustdoc Created tests/rustdoc/async subfolder to limit number of files at the top level 2025-05-05 17:49:12 +02:00
rustdoc-gui Rollup merge of #140135 - GuillaumeGomez:sidebars-image, r=rustdoc 2025-05-06 14:50:45 +02:00
rustdoc-js rustdoc-search: add unbox flag to Result aliases 2025-04-11 11:36:40 -07:00
rustdoc-js-std Consistent trait bounds for ExtractIf Debug impls 2025-05-05 19:46:46 -07:00
rustdoc-json Improve hir pretty-printing of attributes. 2025-05-03 12:46:48 +10:00
rustdoc-ui compiletest: Support matching on non-json lines in compiler output 2025-05-04 18:27:45 +03:00
ui Auto merge of #140702 - GuillaumeGomez:rollup-rpyxs20, r=GuillaumeGomez 2025-05-06 13:42:09 +00:00
ui-fulldeps Auto merge of #140453 - Zoxc:next-disambiguator, r=oli-obk 2025-05-05 11:50:43 +00:00
COMPILER_TESTS.md