llvm-project/clang/test/Profile
Vedant Kumar 96d6ca7e8c [Profile] Add off-by-default -Wprofile-instr-missing warning
Clang warns that a profile is out-of-date if it can't find a profile
record for any function in a TU. This warning became noisy after llvm
started allowing dead-stripping of instrumented functions.

To fix this, this patch changes the existing profile out-of-date warning
(-Wprofile-instr-out-of-date) so that it only complains about mismatched
data. Further, it introduces a new, off-by-default warning about missing
function data (-Wprofile-instr-missing).

Differential Revision: https://reviews.llvm.org/D28867

llvm-svn: 301570
2017-04-27 17:30:58 +00:00
..
Inputs [profiling] PR31992: Don't skip interesting non-base constructors 2017-02-24 01:15:19 +00:00
README
c-avoid-direct-call.c [PGO] Avoid instrumenting constants at value sites 2016-03-31 18:41:34 +00:00
c-captured.c [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
c-counter-overflows.c [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
c-general.c [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
c-generate.c [profiling] Tighten test cases which refer to "profn" vars. NFC. 2017-02-18 01:50:14 +00:00
c-indirect-call.c Add test for D21736. 2016-11-22 20:03:40 +00:00
c-linkage-available_externally.c [Profile] Update testcase for r283948 (NFC) 2016-10-11 21:56:05 +00:00
c-linkage.c [PGO] cc1 option name change for profile instrumentation 2016-02-04 18:39:09 +00:00
c-outdated-data.c [Profile] Add off-by-default -Wprofile-instr-missing warning 2017-04-27 17:30:58 +00:00
c-ternary.c Weaken test/Profile/c-ternary.c 2017-02-25 07:21:23 +00:00
c-unprofiled-blocks.c [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
c-unprofiled.c [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
c-unreachable-after-switch.c [PGO] cc1 option name change for profile instrumentation 2016-02-04 18:39:09 +00:00
cxx-class.cpp [profiling] PR31992: Don't skip interesting non-base constructors 2017-02-24 01:15:19 +00:00
cxx-implicit.cpp [PGO] Cover more cases of implicitly generated C++ methods 2016-02-08 22:41:37 +00:00
cxx-indirect-call.cpp Add test for D21736. 2016-11-22 20:03:40 +00:00
cxx-lambda.cpp [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
cxx-linkage.cpp [PGO] cc1 option name change for profile instrumentation 2016-02-04 18:39:09 +00:00
cxx-rangefor.cpp [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
cxx-stmt-initializers.cpp [Coverage] Support for C++17 if initializers 2016-10-14 23:38:16 +00:00
cxx-structors.cpp [profiling] PR31992: Don't skip interesting non-base constructors 2017-02-24 01:15:19 +00:00
cxx-templates.cpp [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
cxx-throws.cpp [profile] Use cc1 in these tests instead of the driver. 2016-04-23 02:11:16 +00:00
cxx-virtual-destructor-calls.cpp [profiling] Update test cases to deal with name variable change (NFC) 2017-02-14 20:03:56 +00:00
def-assignop.cpp Test simplification 2016-02-17 00:59:01 +00:00
def-ctors.cpp Simplify test cases 2016-02-08 19:14:14 +00:00
def-dtors.cpp Simplify test cases 2016-02-08 19:14:14 +00:00
func-entry.c Make '-disable-llvm-optzns' an alias for '-disable-llvm-passes'. 2016-12-23 00:23:01 +00:00
gcc-flag-compatibility.c Fix two test cases I missed updating in r291850. Sorry for the noise. 2017-01-12 22:48:28 +00:00
objc-general.m [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
profile-does-not-exist.c [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +00:00
profile-summary.c Make '-disable-llvm-optzns' an alias for '-disable-llvm-passes'. 2016-12-23 00:23:01 +00:00

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.