llvm-project/clang/test/Profile
Rong Xu 50da55a585 [PGO] Supporting code for always instrumenting entry block
This patch includes the supporting code that enables always
instrumenting the function entry block by default.

This patch will NOT the default behavior.

It adds a variant bit in the profile version, adds new directives in
text profile format, and changes llvm-profdata tool accordingly.

This patch is a split of D83024 (https://reviews.llvm.org/D83024)
Many test changes from D83024 are also included.

Differential Revision: https://reviews.llvm.org/D84261
2020-07-22 15:01:53 -07:00
..
Inputs [PGO] Supporting code for always instrumenting entry block 2020-07-22 15:01:53 -07:00
README
c-avoid-direct-call.c
c-captured.c
c-collision.c [PGO] Fix computation of function Hash 2020-05-27 09:15:21 +02:00
c-counter-overflows.c
c-general.c [PGO] Fix computation of function Hash 2020-05-27 09:15:21 +02:00
c-generate.c
c-indirect-call.c
c-linkage-available_externally.c
c-linkage.c
c-outdated-data.c
c-ternary.c
c-unprofiled-blocks.c
c-unprofiled.c
c-unreachable-after-switch.c
cxx-abc-deleting-dtor.cpp
cxx-class.cpp
cxx-hash-v2.cpp
cxx-implicit.cpp
cxx-indirect-call.cpp
cxx-lambda.cpp
cxx-linkage.cpp
cxx-missing-bodies.cpp
cxx-rangefor.cpp
cxx-stmt-initializers.cpp
cxx-structors.cpp
cxx-templates.cpp [InstrProf] Use separate comdat group for data and counters 2019-02-27 23:38:44 +00:00
cxx-throws.cpp
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 [PGO] Supporting code for always instrumenting entry block 2020-07-22 15:01:53 -07:00
misexpect-branch-cold.c Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
misexpect-branch-nonconst-expected-val.c Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
misexpect-branch-unpredictable.c Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
misexpect-branch.c Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
misexpect-switch-default.c Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
misexpect-switch-nonconst.c Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
misexpect-switch-only-default-case.c Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
misexpect-switch.c Reland "clang-misexpect: Profile Guided Validation of Performance Annotations in LLVM" 2019-09-11 16:19:50 +00:00
objc-general.m
profile-does-not-exist.c
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.