1212// ===----------------------------------------------------------------------===//
1313
1414#include " CoverageSummaryInfo.h"
15+ #include " llvm/ProfileData/Coverage/CoverageMapping.h"
1516
1617using namespace llvm ;
1718using namespace coverage ;
@@ -44,13 +45,13 @@ static void sumBranchExpansions(size_t &NumBranches, size_t &CoveredBranches,
4445 }
4546}
4647
47- static std::pair <size_t , size_t >
48- sumMCDCPairs (const ArrayRef<MCDCRecord> &Records) {
48+ static std::tuple <size_t , size_t >
49+ sumMCDCPairs (const ArrayRef<MCDCRecord> &Records, const int32_t CountFlags ) {
4950 size_t NumPairs = 0 , CoveredPairs = 0 ;
5051 for (const auto &Record : Records) {
5152 const auto NumConditions = Record.getNumConditions ();
5253 for (unsigned C = 0 ; C < NumConditions; C++) {
53- if (! Record.isCondFolded (C))
54+ if (Record.getCondResult (C) & CountFlags )
5455 ++NumPairs;
5556 if (Record.isConditionIndependencePairCovered (C))
5657 ++CoveredPairs;
@@ -61,7 +62,8 @@ sumMCDCPairs(const ArrayRef<MCDCRecord> &Records) {
6162
6263FunctionCoverageSummary
6364FunctionCoverageSummary::get (const CoverageMapping &CM,
64- const coverage::FunctionRecord &Function) {
65+ const coverage::FunctionRecord &Function,
66+ const int32_t MCDCCountedFlags) {
6567 // Compute the region coverage.
6668 size_t NumCodeRegions = 0 , CoveredRegions = 0 ;
6769 for (auto &CR : Function.CountedRegions ) {
@@ -89,7 +91,8 @@ FunctionCoverageSummary::get(const CoverageMapping &CM,
8991 sumBranchExpansions (NumBranches, CoveredBranches, CM, CD.getExpansions ());
9092
9193 size_t NumPairs = 0 , CoveredPairs = 0 ;
92- std::tie (NumPairs, CoveredPairs) = sumMCDCPairs (CD.getMCDCRecords ());
94+ std::tie (NumPairs, CoveredPairs) =
95+ sumMCDCPairs (CD.getMCDCRecords (), MCDCCountedFlags);
9396
9497 return FunctionCoverageSummary (
9598 Function.Name , Function.ExecutionCount ,
0 commit comments