diff options
author | Vedant Kumar <vsk@apple.com> | 2016-09-19 00:38:23 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2016-09-19 00:38:23 +0000 |
commit | 016111f7b98ef31f22a0ec95d7d0b0237b5f2176 (patch) | |
tree | cfb5e7b48d92510f338175d97b9ea8e0d6cadee1 /llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp | |
parent | 673ad727cdb19956b94c8f8964b862ebe50bd16a (diff) | |
download | bcm5719-llvm-016111f7b98ef31f22a0ec95d7d0b0237b5f2176.tar.gz bcm5719-llvm-016111f7b98ef31f22a0ec95d7d0b0237b5f2176.zip |
[llvm-cov] Track function and instantiation coverage separately
These are distinct statistics which are useful to look at separately.
Example: say you have a template function "foo" with 5 instantiations
and only 3 of them are covered. Then this contributes (1/1) to the total
function coverage and (3/5) to the total instantiation coverage. I.e,
the old "Function Coverage" column has been renamed to "Instantiation
Coverage", and the new "Function Coverage" aggregates information from
the various instantiations of a function.
One benefit of making this switch is that the Line and Region coverage
columns will start making sense. Let's continue the example and assume
that the 5 instantiations of "foo" cover {2, 4, 6, 8, 10} out of 10
lines respectively. The new line coverage for "foo" is (10/10), not
(30/50). The old scenario got confusing because we'd report that there
were more lines in a file than what was actually possible.
llvm-svn: 281875
Diffstat (limited to 'llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp')
-rw-r--r-- | llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp index e64f31d546e..1ef3219b103 100644 --- a/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp +++ b/llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp @@ -287,8 +287,8 @@ void CoveragePrinterHTML::closeViewFile(OwnedStream OS) { static void emitColumnLabelsForIndex(raw_ostream &OS) { SmallVector<std::string, 4> Columns; Columns.emplace_back(tag("td", "Filename", "column-entry-left")); - for (const char *Label : - {"Function Coverage", "Line Coverage", "Region Coverage"}) + for (const char *Label : {"Function Coverage", "Instantiation Coverage", + "Line Coverage", "Region Coverage"}) Columns.emplace_back(tag("td", Label, "column-entry")); OS << tag("tr", join(Columns.begin(), Columns.end(), "")); } @@ -334,6 +334,9 @@ void CoveragePrinterHTML::emitFileSummary(raw_ostream &OS, StringRef SF, AddCoverageTripleToColumn(FCS.FunctionCoverage.Executed, FCS.FunctionCoverage.NumFunctions, FCS.FunctionCoverage.getPercentCovered()); + AddCoverageTripleToColumn(FCS.InstantiationCoverage.Executed, + FCS.InstantiationCoverage.NumFunctions, + FCS.InstantiationCoverage.getPercentCovered()); AddCoverageTripleToColumn(FCS.LineCoverage.Covered, FCS.LineCoverage.NumLines, FCS.LineCoverage.getPercentCovered()); AddCoverageTripleToColumn(FCS.RegionCoverage.Covered, |