diff options
Diffstat (limited to 'llvm/tools/llvm-cov/CoverageSummaryInfo.h')
-rw-r--r-- | llvm/tools/llvm-cov/CoverageSummaryInfo.h | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/llvm/tools/llvm-cov/CoverageSummaryInfo.h b/llvm/tools/llvm-cov/CoverageSummaryInfo.h index 64c2c84..d921067 100644 --- a/llvm/tools/llvm-cov/CoverageSummaryInfo.h +++ b/llvm/tools/llvm-cov/CoverageSummaryInfo.h @@ -223,26 +223,32 @@ public: } }; -/// A summary of function's code coverage. -struct FunctionCoverageSummary { - std::string Name; - uint64_t ExecutionCount; +struct CoverageDataSummary { RegionCoverageInfo RegionCoverage; LineCoverageInfo LineCoverage; BranchCoverageInfo BranchCoverage; MCDCCoverageInfo MCDCCoverage; - FunctionCoverageSummary(const std::string &Name) - : Name(Name), ExecutionCount(0) {} + CoverageDataSummary() = default; + CoverageDataSummary(const coverage::CoverageData &CD, + ArrayRef<coverage::CountedRegion> CodeRegions); - FunctionCoverageSummary(const std::string &Name, uint64_t ExecutionCount, - const RegionCoverageInfo &RegionCoverage, - const LineCoverageInfo &LineCoverage, - const BranchCoverageInfo &BranchCoverage, - const MCDCCoverageInfo &MCDCCoverage) - : Name(Name), ExecutionCount(ExecutionCount), - RegionCoverage(RegionCoverage), LineCoverage(LineCoverage), - BranchCoverage(BranchCoverage), MCDCCoverage(MCDCCoverage) {} + auto &operator+=(const CoverageDataSummary &RHS) { + RegionCoverage += RHS.RegionCoverage; + LineCoverage += RHS.LineCoverage; + BranchCoverage += RHS.BranchCoverage; + MCDCCoverage += RHS.MCDCCoverage; + return *this; + } +}; + +/// A summary of function's code coverage. +struct FunctionCoverageSummary : CoverageDataSummary { + std::string Name; + uint64_t ExecutionCount; + + FunctionCoverageSummary(const std::string &Name, uint64_t ExecutionCount = 0) + : Name(Name), ExecutionCount(ExecutionCount) {} /// Compute the code coverage summary for the given function coverage /// mapping record. @@ -257,12 +263,8 @@ struct FunctionCoverageSummary { }; /// A summary of file's code coverage. -struct FileCoverageSummary { +struct FileCoverageSummary : CoverageDataSummary { StringRef Name; - RegionCoverageInfo RegionCoverage; - LineCoverageInfo LineCoverage; - BranchCoverageInfo BranchCoverage; - MCDCCoverageInfo MCDCCoverage; FunctionCoverageInfo FunctionCoverage; FunctionCoverageInfo InstantiationCoverage; @@ -270,11 +272,8 @@ struct FileCoverageSummary { FileCoverageSummary(StringRef Name) : Name(Name) {} FileCoverageSummary &operator+=(const FileCoverageSummary &RHS) { - RegionCoverage += RHS.RegionCoverage; - LineCoverage += RHS.LineCoverage; + *static_cast<CoverageDataSummary *>(this) += RHS; FunctionCoverage += RHS.FunctionCoverage; - BranchCoverage += RHS.BranchCoverage; - MCDCCoverage += RHS.MCDCCoverage; InstantiationCoverage += RHS.InstantiationCoverage; return *this; } |