diff options
Diffstat (limited to 'llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp')
-rw-r--r-- | llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp | 24 |
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)); |