[llvm-cov] Track function and instantiation coverage separately
authorVedant Kumar <vsk@apple.com>
Mon, 19 Sep 2016 00:38:23 +0000 (00:38 +0000)
committerVedant Kumar <vsk@apple.com>
Mon, 19 Sep 2016 00:38:23 +0000 (00:38 +0000)
commit016111f7b98ef31f22a0ec95d7d0b0237b5f2176
treecfb5e7b48d92510f338175d97b9ea8e0d6cadee1
parent673ad727cdb19956b94c8f8964b862ebe50bd16a
[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
llvm/test/tools/llvm-cov/Inputs/hideUnexecutedSubviews.proftext
llvm/test/tools/llvm-cov/hideUnexecutedSubviews.test
llvm/test/tools/llvm-cov/report.cpp
llvm/test/tools/llvm-cov/showLineExecutionCounts.cpp
llvm/tools/llvm-cov/CoverageReport.cpp
llvm/tools/llvm-cov/CoverageSummaryInfo.cpp
llvm/tools/llvm-cov/CoverageSummaryInfo.h
llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp