llvm-project/clang/test/Profile
Petr Hosek 5fbd1a333a [Coverage] Store compilation dir separately in coverage mapping
We currently always store absolute filenames in coverage mapping.  This
is problematic for several reasons. It poses a problem for distributed
compilation as source location might vary across machines.  We are also
duplicating the path prefix potentially wasting space.

This change modifies how we store filenames in coverage mapping. Rather
than absolute paths, it stores the compilation directory and file paths
as given to the compiler, either relative or absolute. Later when
reading the coverage mapping information, we recombine relative paths
with the working directory. This approach is similar to handling
ofDW_AT_comp_dir in DWARF.

Finally, we also provide a new option, -fprofile-compilation-dir akin
to -fdebug-compilation-dir which can be used to manually override the
compilation directory which is useful in distributed compilation cases.

Differential Revision: https://reviews.llvm.org/D95753
2021-02-18 14:34:39 -08:00
..
Inputs [Coverage] Add support for Branch Coverage in LLVM Source-Based Code Coverage 2021-01-05 09:51:51 -06:00
README
branch-logical-mixed.cpp [Coverage] Fix Profile test failures from commit rG9f2967bcfe2f 2021-01-05 14:53:07 -06:00
branch-profdup.cpp [Coverage] Fix test failures from commit rG9f2967bcfe2f 2021-01-05 13:35:52 -06:00
c-avoid-direct-call.c
c-captured.c [test] Add {{.*}} to make tests immune to dso_local/dso_preemptable/(none) differences 2020-12-30 20:52:01 -08:00
c-collision.c [PGO] Fix computation of function Hash 2020-05-27 09:15:21 +02:00
c-counter-overflows.c Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
c-general.c [Coverage] Add support for Branch Coverage in LLVM Source-Based Code Coverage 2021-01-05 09:51:51 -06:00
c-generate.c Reapply multiple "[clang][cli]" patches 2021-01-06 13:27:19 +01:00
c-indirect-call.c
c-linkage-available_externally.c
c-linkage.c
c-outdated-data.c
c-ternary.c [test] Add {{.*}} to make tests immune to dso_local/dso_preemptable/(none) differences 2020-12-30 20:52:01 -08:00
c-unprofiled-blocks.c [clang] Add mustprogress and llvm.loop.mustprogress attribute deduction 2020-11-04 22:03:14 -05:00
c-unprofiled.c
c-unreachable-after-switch.c
cxx-abc-deleting-dtor.cpp [CodeGen] Apply 'nonnull' and 'dereferenceable(N)' to 'this' pointer 2020-11-16 17:39:17 -08:00
cxx-class.cpp Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
cxx-hash-v2.cpp
cxx-implicit.cpp
cxx-indirect-call.cpp
cxx-lambda.cpp [Coverage] Add support for Branch Coverage in LLVM Source-Based Code Coverage 2021-01-05 09:51:51 -06:00
cxx-linkage.cpp
cxx-missing-bodies.cpp
cxx-rangefor.cpp Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
cxx-stmt-initializers.cpp
cxx-structors.cpp
cxx-templates.cpp Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
cxx-throws.cpp Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
cxx-virtual-destructor-calls.cpp
def-assignop.cpp Reland: [Coverage] Revise format to reduce binary size 2020-02-28 18:12:04 -08:00
def-ctors.cpp Reland: [Coverage] Revise format to reduce binary size 2020-02-28 18:12:04 -08:00
def-dtors.cpp Reland: [Coverage] Revise format to reduce binary size 2020-02-28 18:12:04 -08:00
func-entry.c
gcc-flag-compatibility.c Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
objc-general.m Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
profile-does-not-exist.c
profile-prefix-map.c [Coverage] Store compilation dir separately in coverage mapping 2021-02-18 14:34:39 -08:00
profile-summary.c

README

These are tests for instrumentation based profiling.  This specifically means
the -fprofile-instr-generate and -fprofile-instr-use driver flags.

Tests in this directory should usually test both:

  - the generation of instrumentation (-fprofile-instr-generate), and
  - the use of profile data from instrumented runs (-fprofile-instr-use).

In order to test -fprofile-instr-use without actually running an instrumented
program, .profdata files are checked into Inputs/.

The input source files must include a main function such that building with
-fprofile-instr-generate and running the resulting program generates the same
.profdata file that is consumed by the tests for -fprofile-instr-use.  Even
tests that only check -fprofile-instr-use should include such a main function,
so that profile data can be regenerated as the .profdata file format evolves.