From c5932182adfe57f38438f6b7509d1f8b9f95fd73 Mon Sep 17 00:00:00 2001 From: Zalathar Date: Wed, 3 Jan 2024 16:42:41 +1100 Subject: coverage: Store extracted spans as a flat list of mappings This is less elegant in some ways, since we no longer visit a BCB's spans as a batch, but will make it much easier to add support for other kinds of coverage mapping regions (e.g. branch regions or gap regions). --- compiler/rustc_mir_transform/src/coverage/mod.rs | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) (limited to 'compiler/rustc_mir_transform/src/coverage/mod.rs') diff --git a/compiler/rustc_mir_transform/src/coverage/mod.rs b/compiler/rustc_mir_transform/src/coverage/mod.rs index 5c1dabea987..b91afb19d8f 100644 --- a/compiler/rustc_mir_transform/src/coverage/mod.rs +++ b/compiler/rustc_mir_transform/src/coverage/mod.rs @@ -9,7 +9,7 @@ mod tests; use self::counters::{BcbCounter, CoverageCounters}; use self::graph::{BasicCoverageBlock, CoverageGraph}; -use self::spans::CoverageSpans; +use self::spans::{BcbMapping, CoverageSpans}; use crate::MirPass; @@ -149,16 +149,9 @@ impl<'a, 'tcx> Instrumentor<'a, 'tcx> { }; coverage_spans - .bcbs_with_coverage_spans() - // For each BCB with spans, get a coverage term for its counter. - .map(|(bcb, spans)| { + .all_bcb_mappings() + .filter_map(|&BcbMapping { bcb, span }| { let term = term_for_bcb(bcb); - (term, spans) - }) - // Flatten the spans into individual term/span pairs. - .flat_map(|(term, spans)| spans.iter().map(move |&span| (term, span))) - // Convert each span to a code region, and create the final mapping. - .filter_map(|(term, span)| { let code_region = make_code_region(source_map, file_name, span, body_span)?; Some(Mapping { term, code_region }) }) -- cgit 1.4.1-3-g733a5