From 618a22144db5e45da8c95dc22064103e1b5e5b71 Mon Sep 17 00:00:00 2001 From: Alan Phipps Date: Mon, 18 Sep 2023 15:49:56 -0500 Subject: [Coverage][llvm-cov] Enable MC/DC Support in LLVM Source-based Code Coverage (2/3) Part 2 of 3. This includes the Visualization and Evaluation components. Differential Revision: https://reviews.llvm.org/D138847 --- llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp') diff --git a/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp b/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp index 23d86bd..81a9e58 100644 --- a/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp +++ b/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp @@ -237,6 +237,23 @@ void CoverageMappingWriter::write(raw_ostream &OS) { writeCounter(MinExpressions, Count, OS); writeCounter(MinExpressions, FalseCount, OS); break; + case CounterMappingRegion::MCDCBranchRegion: + encodeULEB128(unsigned(I->Kind) + << Counter::EncodingCounterTagAndExpansionRegionTagBits, + OS); + writeCounter(MinExpressions, Count, OS); + writeCounter(MinExpressions, FalseCount, OS); + encodeULEB128(unsigned(I->MCDCParams.ID), OS); + encodeULEB128(unsigned(I->MCDCParams.TrueID), OS); + encodeULEB128(unsigned(I->MCDCParams.FalseID), OS); + break; + case CounterMappingRegion::MCDCDecisionRegion: + encodeULEB128(unsigned(I->Kind) + << Counter::EncodingCounterTagAndExpansionRegionTagBits, + OS); + encodeULEB128(unsigned(I->MCDCParams.BitmapIdx), OS); + encodeULEB128(unsigned(I->MCDCParams.NumConditions), OS); + break; } assert(I->LineStart >= PrevLineStart); encodeULEB128(I->LineStart - PrevLineStart, OS); -- cgit v1.1