diff options
| author | Zalathar <Zalathar@users.noreply.github.com> | 2024-05-02 14:18:22 +1000 |
|---|---|---|
| committer | Zalathar <Zalathar@users.noreply.github.com> | 2024-05-04 11:26:05 +1000 |
| commit | 76d8d01604282316110377162c941499a931d7bf (patch) | |
| tree | c54336523b02b9ec5ac3d316f7f2ad7d1e4d4e6c /compiler/rustc_mir_transform/src/coverage/mappings.rs | |
| parent | cf2d741d4046b0e7dd4f96d17096b86c78846fc9 (diff) | |
| download | rust-76d8d01604282316110377162c941499a931d7bf.tar.gz rust-76d8d01604282316110377162c941499a931d7bf.zip | |
coverage: Flatten `BcbMappingKind` into `mappings::CodeMapping`
Now that branch and MC/DC mappings have been split out into separate types and vectors, this enum is no longer needed, since it only represents ordinary "code" regions. (We can revisit this decision if we ever add support for other region kinds, such as skipped regions or expansion regions. But at that point, we might just add new structs/vectors for those kinds as well.)
Diffstat (limited to 'compiler/rustc_mir_transform/src/coverage/mappings.rs')
| -rw-r--r-- | compiler/rustc_mir_transform/src/coverage/mappings.rs | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/compiler/rustc_mir_transform/src/coverage/mappings.rs b/compiler/rustc_mir_transform/src/coverage/mappings.rs index 568a07aa932..a8eac9985e0 100644 --- a/compiler/rustc_mir_transform/src/coverage/mappings.rs +++ b/compiler/rustc_mir_transform/src/coverage/mappings.rs @@ -13,22 +13,14 @@ use crate::coverage::spans::{ }; use crate::coverage::ExtractedHirInfo; -#[derive(Clone, Copy, Debug)] -pub(super) enum BcbMappingKind { - /// Associates an ordinary executable code span with its corresponding BCB. - Code(BasicCoverageBlock), - // - // Branch and MC/DC mappings are more complex, so they are represented - // separately. -} - +/// Associates an ordinary executable code span with its corresponding BCB. #[derive(Debug)] -pub(super) struct BcbMapping { - pub(super) kind: BcbMappingKind, +pub(super) struct CodeMapping { pub(super) span: Span, + pub(super) bcb: BasicCoverageBlock, } -/// This is separate from [`BcbMappingKind`] to help prepare for larger changes +/// This is separate from [`MCDCBranch`] to help prepare for larger changes /// that will be needed for improved branch coverage in the future. /// (See <https://github.com/rust-lang/rust/pull/124217>.) #[derive(Debug)] @@ -62,7 +54,7 @@ pub(super) struct MCDCDecision { pub(super) struct CoverageSpans { bcb_has_mappings: BitSet<BasicCoverageBlock>, - pub(super) mappings: Vec<BcbMapping>, + pub(super) code_mappings: Vec<CodeMapping>, pub(super) branch_pairs: Vec<BcbBranchPair>, test_vector_bitmap_bytes: u32, pub(super) mcdc_branches: Vec<MCDCBranch>, @@ -88,7 +80,7 @@ pub(super) fn generate_coverage_spans( hir_info: &ExtractedHirInfo, basic_coverage_blocks: &CoverageGraph, ) -> Option<CoverageSpans> { - let mut mappings = vec![]; + let mut code_mappings = vec![]; let mut branch_pairs = vec![]; let mut mcdc_branches = vec![]; let mut mcdc_decisions = vec![]; @@ -99,10 +91,10 @@ pub(super) fn generate_coverage_spans( // outer function will be unhelpful, so just keep the signature span // and ignore all of the spans in the MIR body. if let Some(span) = hir_info.fn_sig_span_extended { - mappings.push(BcbMapping { kind: BcbMappingKind::Code(START_BCB), span }); + code_mappings.push(CodeMapping { span, bcb: START_BCB }); } } else { - extract_refined_covspans(mir_body, hir_info, basic_coverage_blocks, &mut mappings); + extract_refined_covspans(mir_body, hir_info, basic_coverage_blocks, &mut code_mappings); branch_pairs.extend(extract_branch_pairs(mir_body, hir_info, basic_coverage_blocks)); @@ -115,7 +107,7 @@ pub(super) fn generate_coverage_spans( ); } - if mappings.is_empty() + if code_mappings.is_empty() && branch_pairs.is_empty() && mcdc_branches.is_empty() && mcdc_decisions.is_empty() @@ -129,10 +121,8 @@ pub(super) fn generate_coverage_spans( bcb_has_mappings.insert(bcb); }; - for &BcbMapping { kind, span: _ } in &mappings { - match kind { - BcbMappingKind::Code(bcb) => insert(bcb), - } + for &CodeMapping { span: _, bcb } in &code_mappings { + insert(bcb); } for &BcbBranchPair { true_bcb, false_bcb, .. } in &branch_pairs { insert(true_bcb); @@ -154,7 +144,7 @@ pub(super) fn generate_coverage_spans( Some(CoverageSpans { bcb_has_mappings, - mappings, + code_mappings, branch_pairs, test_vector_bitmap_bytes, mcdc_branches, |
