1616using namespace llvm ;
1717using namespace coverage ;
1818
19- static void sumBranches (size_t &NumBranches, size_t &CoveredBranches,
20- const ArrayRef<CountedRegion> &Branches) {
19+ static auto sumBranches (const ArrayRef<CountedRegion> &Branches) {
20+ size_t NumBranches = 0 ;
21+ size_t CoveredBranches = 0 ;
2122 for (const auto &BR : Branches) {
2223 if (!BR.TrueFolded ) {
2324 // "True" Condition Branches.
@@ -32,20 +33,22 @@ static void sumBranches(size_t &NumBranches, size_t &CoveredBranches,
3233 ++CoveredBranches;
3334 }
3435 }
36+ return BranchCoverageInfo (CoveredBranches, NumBranches);
3537}
3638
37- static void sumBranchExpansions (size_t &NumBranches, size_t &CoveredBranches,
38- const CoverageMapping &CM,
39- ArrayRef<ExpansionRecord> Expansions) {
39+ static BranchCoverageInfo
40+ sumBranchExpansions (const CoverageMapping &CM,
41+ ArrayRef<ExpansionRecord> Expansions) {
42+ BranchCoverageInfo BranchCoverage;
4043 for (const auto &Expansion : Expansions) {
4144 auto CE = CM.getCoverageForExpansion (Expansion);
42- sumBranches (NumBranches, CoveredBranches, CE.getBranches ());
43- sumBranchExpansions (NumBranches, CoveredBranches, CM, CE.getExpansions ());
45+ BranchCoverage += sumBranches ( CE.getBranches ());
46+ BranchCoverage += sumBranchExpansions ( CM, CE.getExpansions ());
4447 }
48+ return BranchCoverage;
4549}
4650
47- static std::pair<size_t , size_t >
48- sumMCDCPairs (const ArrayRef<MCDCRecord> &Records) {
51+ auto sumMCDCPairs (const ArrayRef<MCDCRecord> &Records) {
4952 size_t NumPairs = 0 , CoveredPairs = 0 ;
5053 for (const auto &Record : Records) {
5154 const auto NumConditions = Record.getNumConditions ();
@@ -56,7 +59,7 @@ sumMCDCPairs(const ArrayRef<MCDCRecord> &Records) {
5659 ++CoveredPairs;
5760 }
5861 }
59- return {NumPairs, CoveredPairs} ;
62+ return MCDCCoverageInfo (CoveredPairs, NumPairs) ;
6063}
6164
6265static std::pair<RegionCoverageInfo, LineCoverageInfo>
@@ -85,24 +88,27 @@ sumRegions(ArrayRef<CountedRegion> CodeRegions, const CoverageData &CD) {
8588 LineCoverageInfo (CoveredLines, NumLines)};
8689}
8790
91+ CoverageDataSummary::CoverageDataSummary (const CoverageData &CD,
92+ ArrayRef<CountedRegion> CodeRegions) {
93+ std::tie (RegionCoverage, LineCoverage) = sumRegions (CodeRegions, CD);
94+ BranchCoverage = sumBranches (CD.getBranches ());
95+ MCDCCoverage = sumMCDCPairs (CD.getMCDCRecords ());
96+ }
97+
8898FunctionCoverageSummary
8999FunctionCoverageSummary::get (const CoverageMapping &CM,
90100 const coverage::FunctionRecord &Function) {
91101 CoverageData CD = CM.getCoverageForFunction (Function);
92- auto [RegionCoverage, LineCoverage] = sumRegions (Function.CountedRegions , CD);
93102
94- // Compute the branch coverage, including branches from expansions.
95- size_t NumBranches = 0 , CoveredBranches = 0 ;
96- sumBranches (NumBranches, CoveredBranches, CD.getBranches ());
97- sumBranchExpansions (NumBranches, CoveredBranches, CM, CD.getExpansions ());
103+ auto Summary =
104+ FunctionCoverageSummary (Function.Name , Function.ExecutionCount );
98105
99- size_t NumPairs = 0 , CoveredPairs = 0 ;
100- std::tie (NumPairs, CoveredPairs) = sumMCDCPairs (CD.getMCDCRecords ());
106+ Summary += CoverageDataSummary (CD, Function.CountedRegions );
101107
102- return FunctionCoverageSummary (
103- Function. Name , Function. ExecutionCount , RegionCoverage, LineCoverage,
104- BranchCoverageInfo (CoveredBranches, NumBranches),
105- MCDCCoverageInfo (CoveredPairs, NumPairs)) ;
108+ // Compute the branch coverage, including branches from expansions.
109+ Summary. BranchCoverage += sumBranchExpansions (CM, CD. getExpansions ());
110+
111+ return Summary ;
106112}
107113
108114FunctionCoverageSummary
@@ -117,8 +123,7 @@ FunctionCoverageSummary::get(const InstantiationGroup &Group,
117123 << Group.getColumn ();
118124 }
119125
120- FunctionCoverageSummary Summary (Name);
121- Summary.ExecutionCount = Group.getTotalExecutionCount ();
126+ FunctionCoverageSummary Summary (Name, Group.getTotalExecutionCount ());
122127 Summary.RegionCoverage = Summaries[0 ].RegionCoverage ;
123128 Summary.LineCoverage = Summaries[0 ].LineCoverage ;
124129 Summary.BranchCoverage = Summaries[0 ].BranchCoverage ;
0 commit comments