llvm-project/clang/test/Profile
Betul Buyukkurt 3da993c419 [PGO] Avoid instrumenting constants at value sites
Value profiling should not profile constants and/or constant
expressions when they appear as callees in call instructions.
Constant expressions form when a direct callee has bitcasts or
inttoptr(ptrtint (callee)) nests surrounding it. Value profiling
should avoid instrumenting such cases. Mostly NFC.

llvm-svn: 265037
2016-03-31 18:41:34 +00:00
..
Inputs Attach profile summary information to Module. 2016-03-24 21:32:25 +00:00
README PGO: Clarify the testing README 2014-03-11 18:18:12 +00:00
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 [PGO] cc1 option name change for profile instrumentation 2016-02-04 18:39:09 +00:00
c-indirect-call.c [PGO] Move the instrumentation point closer to the value site. 2016-03-29 20:44:09 +00:00
c-linkage-available_externally.c [PGO] cc1 option name change for profile instrumentation 2016-02-04 18:39:09 +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 [PGO] Change profile use cc1 option to handle IR level profiles 2016-03-02 20:59:36 +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 [PGO] make profile prefix even shorter and more readable 2015-12-15 00:33:12 +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 [PGO] Test case fix for r264783 2016-03-29 22:17:52 +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-structors.cpp [PGO] cc1 option name change for profile instrumentation 2016-02-04 18:39:09 +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 [PGO] make profile prefix even shorter and more readable 2015-12-15 00:33:12 +00:00
cxx-virtual-destructor-calls.cpp [PGO] cc1 option name change for profile instrumentation 2016-02-04 18:39:09 +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 Remove setting of inlinehint and cold attributes based on profile data 2016-01-04 23:32:28 +00:00
gcc-flag-compatibility.c Fix a soon to be invalid test 2015-10-29 04:04:07 +00:00
max-function-count.c Attach maximum function count to Module when using PGO mode. 2015-12-17 19:14:27 +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 Attach profile summary information to Module. 2016-03-24 21:32:25 +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.