diff options
author | NAKAMURA Takumi <geek4civic@gmail.com> | 2025-01-09 17:16:04 +0900 |
---|---|---|
committer | NAKAMURA Takumi <geek4civic@gmail.com> | 2025-01-09 17:16:04 +0900 |
commit | 0aa930a41f2d1ebf1fa90ec42da8f96d15a4dcbb (patch) | |
tree | 6a77b463f700e090df586672c26b9fe765fd115b /llvm/tools/llvm-cov/CoverageSummaryInfo.cpp | |
parent | ec6892d1c979ce0b84c86918d5cdbb03037b409a (diff) | |
parent | 6d16b1c5c468a79ecf867293023c89ac518ecdda (diff) | |
download | llvm-users/chapuni/cov/single/nextcount-base.zip llvm-users/chapuni/cov/single/nextcount-base.tar.gz llvm-users/chapuni/cov/single/nextcount-base.tar.bz2 |
Merge branch 'users/chapuni/cov/single/pair' into users/chapuni/cov/single/nextcount-baseusers/chapuni/cov/single/nextcount-base
Diffstat (limited to 'llvm/tools/llvm-cov/CoverageSummaryInfo.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/CoverageSummaryInfo.cpp | 69 |
1 files changed, 40 insertions, 29 deletions
diff --git a/llvm/tools/llvm-cov/CoverageSummaryInfo.cpp b/llvm/tools/llvm-cov/CoverageSummaryInfo.cpp index 58e7918..5c002a6 100644 --- a/llvm/tools/llvm-cov/CoverageSummaryInfo.cpp +++ b/llvm/tools/llvm-cov/CoverageSummaryInfo.cpp @@ -16,8 +16,9 @@ using namespace llvm; using namespace coverage; -static void sumBranches(size_t &NumBranches, size_t &CoveredBranches, - const ArrayRef<CountedRegion> &Branches) { +static auto sumBranches(const ArrayRef<CountedRegion> &Branches) { + size_t NumBranches = 0; + size_t CoveredBranches = 0; for (const auto &BR : Branches) { if (!BR.TrueFolded) { // "True" Condition Branches. @@ -32,20 +33,22 @@ static void sumBranches(size_t &NumBranches, size_t &CoveredBranches, ++CoveredBranches; } } + return BranchCoverageInfo(CoveredBranches, NumBranches); } -static void sumBranchExpansions(size_t &NumBranches, size_t &CoveredBranches, - const CoverageMapping &CM, - ArrayRef<ExpansionRecord> Expansions) { +static BranchCoverageInfo +sumBranchExpansions(const CoverageMapping &CM, + ArrayRef<ExpansionRecord> Expansions) { + BranchCoverageInfo BranchCoverage; for (const auto &Expansion : Expansions) { auto CE = CM.getCoverageForExpansion(Expansion); - sumBranches(NumBranches, CoveredBranches, CE.getBranches()); - sumBranchExpansions(NumBranches, CoveredBranches, CM, CE.getExpansions()); + BranchCoverage += sumBranches(CE.getBranches()); + BranchCoverage += sumBranchExpansions(CM, CE.getExpansions()); } + return BranchCoverage; } -static std::pair<size_t, size_t> -sumMCDCPairs(const ArrayRef<MCDCRecord> &Records) { +auto sumMCDCPairs(const ArrayRef<MCDCRecord> &Records) { size_t NumPairs = 0, CoveredPairs = 0; for (const auto &Record : Records) { const auto NumConditions = Record.getNumConditions(); @@ -56,15 +59,14 @@ sumMCDCPairs(const ArrayRef<MCDCRecord> &Records) { ++CoveredPairs; } } - return {NumPairs, CoveredPairs}; + return MCDCCoverageInfo(CoveredPairs, NumPairs); } -FunctionCoverageSummary -FunctionCoverageSummary::get(const CoverageMapping &CM, - const coverage::FunctionRecord &Function) { +static std::pair<RegionCoverageInfo, LineCoverageInfo> +sumRegions(ArrayRef<CountedRegion> CodeRegions, const CoverageData &CD) { // Compute the region coverage. size_t NumCodeRegions = 0, CoveredRegions = 0; - for (auto &CR : Function.CountedRegions) { + for (auto &CR : CodeRegions) { if (CR.Kind != CounterMappingRegion::CodeRegion) continue; ++NumCodeRegions; @@ -74,7 +76,6 @@ FunctionCoverageSummary::get(const CoverageMapping &CM, // Compute the line coverage size_t NumLines = 0, CoveredLines = 0; - CoverageData CD = CM.getCoverageForFunction(Function); for (const auto &LCS : getLineCoverageStats(CD)) { if (!LCS.isMapped()) continue; @@ -83,20 +84,31 @@ FunctionCoverageSummary::get(const CoverageMapping &CM, ++CoveredLines; } + return {RegionCoverageInfo(CoveredRegions, NumCodeRegions), + LineCoverageInfo(CoveredLines, NumLines)}; +} + +CoverageDataSummary::CoverageDataSummary(const CoverageData &CD, + ArrayRef<CountedRegion> CodeRegions) { + std::tie(RegionCoverage, LineCoverage) = sumRegions(CodeRegions, CD); + BranchCoverage = sumBranches(CD.getBranches()); + MCDCCoverage = sumMCDCPairs(CD.getMCDCRecords()); +} + +FunctionCoverageSummary +FunctionCoverageSummary::get(const CoverageMapping &CM, + const coverage::FunctionRecord &Function) { + CoverageData CD = CM.getCoverageForFunction(Function); + + auto Summary = + FunctionCoverageSummary(Function.Name, Function.ExecutionCount); + + Summary += CoverageDataSummary(CD, Function.CountedRegions); + // Compute the branch coverage, including branches from expansions. - size_t NumBranches = 0, CoveredBranches = 0; - sumBranches(NumBranches, CoveredBranches, CD.getBranches()); - sumBranchExpansions(NumBranches, CoveredBranches, CM, CD.getExpansions()); + Summary.BranchCoverage += sumBranchExpansions(CM, CD.getExpansions()); - size_t NumPairs = 0, CoveredPairs = 0; - std::tie(NumPairs, CoveredPairs) = sumMCDCPairs(CD.getMCDCRecords()); - - return FunctionCoverageSummary( - Function.Name, Function.ExecutionCount, - RegionCoverageInfo(CoveredRegions, NumCodeRegions), - LineCoverageInfo(CoveredLines, NumLines), - BranchCoverageInfo(CoveredBranches, NumBranches), - MCDCCoverageInfo(CoveredPairs, NumPairs)); + return Summary; } FunctionCoverageSummary @@ -111,8 +123,7 @@ FunctionCoverageSummary::get(const InstantiationGroup &Group, << Group.getColumn(); } - FunctionCoverageSummary Summary(Name); - Summary.ExecutionCount = Group.getTotalExecutionCount(); + FunctionCoverageSummary Summary(Name, Group.getTotalExecutionCount()); Summary.RegionCoverage = Summaries[0].RegionCoverage; Summary.LineCoverage = Summaries[0].LineCoverage; Summary.BranchCoverage = Summaries[0].BranchCoverage; |