aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp')
-rw-r--r--llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp b/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp
index 248a6a7..3267afd 100644
--- a/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp
+++ b/llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp
@@ -213,6 +213,7 @@ void CoverageMappingWriter::write(raw_ostream &OS) {
}
Counter Count = Minimizer.adjust(I->Count);
Counter FalseCount = Minimizer.adjust(I->FalseCount);
+ bool ParamsShouldBeNull = true;
switch (I->Kind) {
case CounterMappingRegion::CodeRegion:
case CounterMappingRegion::GapRegion:
@@ -251,17 +252,25 @@ void CoverageMappingWriter::write(raw_ostream &OS) {
OS);
writeCounter(MinExpressions, Count, OS);
writeCounter(MinExpressions, FalseCount, OS);
- assert(I->MCDCParams.ID > 0);
- encodeULEB128(unsigned(I->MCDCParams.ID), OS);
- encodeULEB128(unsigned(I->MCDCParams.TrueID), OS);
- encodeULEB128(unsigned(I->MCDCParams.FalseID), OS);
+ {
+ const auto &BranchParams = I->getBranchParams();
+ ParamsShouldBeNull = false;
+ assert(BranchParams.ID > 0);
+ encodeULEB128(static_cast<unsigned>(BranchParams.ID), OS);
+ encodeULEB128(static_cast<unsigned>(BranchParams.TrueID), OS);
+ encodeULEB128(static_cast<unsigned>(BranchParams.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);
+ {
+ const auto &DecisionParams = I->getDecisionParams();
+ ParamsShouldBeNull = false;
+ encodeULEB128(static_cast<unsigned>(DecisionParams.BitmapIdx), OS);
+ encodeULEB128(static_cast<unsigned>(DecisionParams.NumConditions), OS);
+ }
break;
}
assert(I->LineStart >= PrevLineStart);
@@ -271,6 +280,9 @@ void CoverageMappingWriter::write(raw_ostream &OS) {
encodeULEB128(I->LineEnd - I->LineStart, OS);
encodeULEB128(I->ColumnEnd, OS);
PrevLineStart = I->LineStart;
+ assert((!ParamsShouldBeNull || std::get_if<0>(&I->MCDCParams)) &&
+ "MCDCParams should be empty");
+ (void)ParamsShouldBeNull;
}
// Ensure that all file ids have at least one mapping region.
assert(CurrentFileID == (VirtualFileMapping.size() - 1));