[Coverage] Add support for Branch Coverage in LLVM Source-Based Code Coverage
authorAlan Phipps <a-phipps@ti.com>
Mon, 28 Dec 2020 17:20:48 +0000 (11:20 -0600)
committerAlan Phipps <a-phipps@ti.com>
Tue, 5 Jan 2021 15:51:51 +0000 (09:51 -0600)
commit9f2967bcfe2f7d1fc02281f0098306c90c2c10a5
treea29793dac7b81d67601905911a389a2cf2cdde2e
parent53c3acb89fcc25ba7ef1f1d76a79c241eeacb7f0
[Coverage] Add support for Branch Coverage in LLVM Source-Based Code Coverage

This is an enhancement to LLVM Source-Based Code Coverage in clang to track how
many times individual branch-generating conditions are taken (evaluate to TRUE)
and not taken (evaluate to FALSE).  Individual conditions may comprise larger
boolean expressions using boolean logical operators.  This functionality is
very similar to what is supported by GCOV except that it is very closely
anchored to the ASTs.

Differential Revision: https://reviews.llvm.org/D84467
79 files changed:
clang/docs/SourceBasedCodeCoverage.rst
clang/lib/CodeGen/CGExprScalar.cpp
clang/lib/CodeGen/CGStmt.cpp
clang/lib/CodeGen/CodeGenFunction.cpp
clang/lib/CodeGen/CodeGenFunction.h
clang/lib/CodeGen/CodeGenPGO.cpp
clang/lib/CodeGen/CoverageMappingGen.cpp
clang/lib/CodeGen/CoverageMappingGen.h
clang/test/CoverageMapping/branch-constfolded.cpp [new file with mode: 0644]
clang/test/CoverageMapping/branch-logical-mixed.cpp [new file with mode: 0644]
clang/test/CoverageMapping/branch-macros.cpp [new file with mode: 0644]
clang/test/CoverageMapping/branch-mincounters.cpp [new file with mode: 0644]
clang/test/CoverageMapping/branch-templates.cpp [new file with mode: 0644]
clang/test/CoverageMapping/continue.c
clang/test/CoverageMapping/coroutine.cpp
clang/test/CoverageMapping/if.cpp
clang/test/CoverageMapping/label.cpp
clang/test/CoverageMapping/logical.cpp
clang/test/CoverageMapping/loopmacro.c
clang/test/CoverageMapping/loops.cpp
clang/test/CoverageMapping/macro-expansion.c
clang/test/CoverageMapping/macro-expressions.cpp
clang/test/CoverageMapping/macros.c
clang/test/CoverageMapping/macroscopes.cpp
clang/test/CoverageMapping/moremacros.c
clang/test/CoverageMapping/return.c
clang/test/CoverageMapping/switch.cpp
clang/test/CoverageMapping/switchmacro.c
clang/test/CoverageMapping/test.c
clang/test/CoverageMapping/unreachable-macro.c
clang/test/CoverageMapping/while.c
clang/test/Profile/Inputs/c-general.proftext
clang/test/Profile/branch-logical-mixed.cpp [new file with mode: 0644]
clang/test/Profile/branch-profdup.cpp [new file with mode: 0644]
clang/test/Profile/c-general.c
clang/test/Profile/cxx-lambda.cpp
compiler-rt/include/profile/InstrProfData.inc
llvm/docs/CommandGuide/llvm-cov.rst
llvm/docs/CoverageMappingFormat.rst
llvm/include/llvm/ProfileData/Coverage/CoverageMapping.h
llvm/include/llvm/ProfileData/InstrProf.h
llvm/include/llvm/ProfileData/InstrProfData.inc
llvm/lib/ProfileData/Coverage/CoverageMapping.cpp
llvm/lib/ProfileData/Coverage/CoverageMappingReader.cpp
llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp
llvm/test/tools/llvm-cov/Inputs/binary-formats.canonical.json
llvm/test/tools/llvm-cov/Inputs/branch-c-general.o32l [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/branch-c-general.proftext [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.o32l [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/branch-logical-mixed.proftext [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/branch-macros.o32l [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/branch-macros.proftext [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.o32l [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/branch-showBranchPercentage.proftext [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/branch-templates.o32l [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/branch-templates.proftext [new file with mode: 0644]
llvm/test/tools/llvm-cov/Inputs/showExpansions.json
llvm/test/tools/llvm-cov/branch-c-general.c [new file with mode: 0644]
llvm/test/tools/llvm-cov/branch-export-json.test [new file with mode: 0644]
llvm/test/tools/llvm-cov/branch-export-lcov.test [new file with mode: 0644]
llvm/test/tools/llvm-cov/branch-logical-mixed.cpp [new file with mode: 0644]
llvm/test/tools/llvm-cov/branch-macros.cpp [new file with mode: 0644]
llvm/test/tools/llvm-cov/branch-noShowBranch.test [new file with mode: 0644]
llvm/test/tools/llvm-cov/branch-showBranchPercentage.c [new file with mode: 0644]
llvm/test/tools/llvm-cov/branch-templates.cpp [new file with mode: 0644]
llvm/test/tools/llvm-cov/ignore-filename-regex.test
llvm/tools/llvm-cov/CodeCoverage.cpp
llvm/tools/llvm-cov/CoverageExporterJson.cpp
llvm/tools/llvm-cov/CoverageExporterLcov.cpp
llvm/tools/llvm-cov/CoverageReport.cpp
llvm/tools/llvm-cov/CoverageSummaryInfo.cpp
llvm/tools/llvm-cov/CoverageSummaryInfo.h
llvm/tools/llvm-cov/CoverageViewOptions.h
llvm/tools/llvm-cov/SourceCoverageView.cpp
llvm/tools/llvm-cov/SourceCoverageView.h
llvm/tools/llvm-cov/SourceCoverageViewHTML.cpp
llvm/tools/llvm-cov/SourceCoverageViewHTML.h
llvm/tools/llvm-cov/SourceCoverageViewText.cpp
llvm/tools/llvm-cov/SourceCoverageViewText.h