llvm-project/llvm/lib/Transforms/Instrumentation
Xinliang David Li f564c6959e [PGO] Enhance pgo counter promotion
This is an incremental change to the promotion feature.

There are two problems with the current behavior:
1) loops with multiple exiting blocks are totally disabled
2) a counter update can only be promoted one level up in
  the loop nest -- which does help much for short trip
  count inner loops inside a high trip-count outer loops.

Due to this limitation, we still saw very large profile
count fluctuations from run to run for the affected loops
which are usually very hot.

This patch adds the support for promotion counters iteratively
across the loop nest. It also turns on the promotion for
loops with multiple exiting blocks (with a limit).

For single-threaded applications, the performance impact is flat
on average. For instance, dealII improves, but povray regresses.

llvm-svn: 307863
2017-07-12 23:27:44 +00:00
..
AddressSanitizer.cpp Revert r307342, r307343. 2017-07-07 01:31:23 +00:00
BoundsChecking.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
CFGMST.h Remove unneeded use of #undef DEBUG_TYPE. NFC 2017-07-12 20:49:21 +00:00
CMakeLists.txt Split PGO memory intrinsic optimization into its own source file 2017-06-15 20:23:57 +00:00
DataFlowSanitizer.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
EfficiencySanitizer.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
GCOVProfiling.cpp Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
IndirectCallPromotion.cpp [ProfileData] PR33517: Check for failure of symtab creation 2017-06-20 01:38:56 +00:00
InstrProfiling.cpp [PGO] Enhance pgo counter promotion 2017-07-12 23:27:44 +00:00
Instrumentation.cpp [PGO] Memory intrinsic calls optimization based on profiled size 2017-04-04 16:42:20 +00:00
LLVMBuild.txt [PGO] Resubmit "MST based PGO instrumentation infrastructure" (r254021) 2015-12-09 18:08:16 +00:00
MaximumSpanningTree.h Remove unneeded use of #undef DEBUG_TYPE. NFC 2017-07-12 20:49:21 +00:00
MemorySanitizer.cpp [msan] Only check shadow memory for operands that are sized. 2017-07-11 18:13:52 +00:00
PGOInstrumentation.cpp [Constants] If we already have a ConstantInt*, prefer to use isZero/isOne/isMinusOne instead of isNullValue/isOneValue/isAllOnesValue inherited from Constant. NFCI 2017-07-06 18:39:47 +00:00
PGOMemOPSizeOpt.cpp Split PGO memory intrinsic optimization into its own source file 2017-06-15 20:23:57 +00:00
SanitizerCoverage.cpp Fixing section name for Darwin platforms for sanitizer coverage 2017-06-14 23:40:25 +00:00
ThreadSanitizer.cpp Enhance synchscope representation 2017-07-11 22:23:00 +00:00