llvm-project/llvm/lib/Transforms/IPO
Teresa Johnson cd21a646f6 [ThinLTO] Perform profile-guided indirect call promotion
Summary:
To enable profile-guided indirect call promotion in ThinLTO mode, we
simply add call graph edges for each profitable target from the profile
to the summaries, then the summary-guided importing will consider the
callee for importing as usual.

Also we need to enable the indirect call promotion pass creation in the
PassManagerBuilder when PerformThinLTO=true (we are in the ThinLTO
backend), so that the newly imported functions are considered for
promotion in the backends.

The IC promotion profiles refer to callees by GUID, which required
adding GUIDs to the per-module VST in bitcode (and assigning them
valueIds similar to how they are assigned valueIds in the combined
index).

Reviewers: mehdi_amini, xur

Subscribers: mehdi_amini, davidxl, llvm-commits

Differential Revision: http://reviews.llvm.org/D21932

llvm-svn: 275707
2016-07-17 14:47:01 +00:00
..
ArgumentPromotion.cpp [ArgPromote] Use function_ref and for-range loops. 2016-07-09 10:36:36 +00:00
BarrierNoopPass.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
CMakeLists.txt IR: New representation for CFI and virtual call optimization pass metadata. 2016-06-24 21:21:32 +00:00
ConstantMerge.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
CrossDSOCFI.cpp [PM] Port CrossDSOCFI to the new pass manager. 2016-07-09 03:25:35 +00:00
DeadArgumentElimination.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
ElimAvailExtern.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
ExtractGV.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
ForceFunctionAttrs.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
FunctionAttrs.cpp Revert "Revert r275027 - Let FuncAttrs infer the 'returned' argument attribute" 2016-07-16 07:21:28 +00:00
FunctionImport.cpp Add 'thinlto_src_module' md with asserts or -enable-import-metadata 2016-07-08 23:01:49 +00:00
GlobalDCE.cpp IR: Introduce Module::global_objects(). 2016-06-22 20:29:42 +00:00
GlobalOpt.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
IPConstantPropagation.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
IPO.cpp [PM] Port PartialInlining to the new PM 2016-06-27 16:50:18 +00:00
InferFunctionAttrs.cpp [TLI] Unify LibFunc attribute inference. NFCI. 2016-04-27 19:04:40 +00:00
InlineAlways.cpp Use ProfileSummaryInfo in inline cost analysis. 2016-06-09 22:23:21 +00:00
InlineSimple.cpp Use ProfileSummaryInfo in inline cost analysis. 2016-06-09 22:23:21 +00:00
Inliner.cpp Use ProfileSummaryInfo in inline cost analysis. 2016-06-09 22:23:21 +00:00
Internalize.cpp PM: Port Internalize to the new pass manager 2016-04-26 20:15:52 +00:00
LLVMBuild.txt [PGO] Passmanagerbuilder change that enable IR level PGO instrumentation 2016-01-21 18:28:59 +00:00
LoopExtractor.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
LowerTypeTests.cpp [PM/IPO] Port LowerTypeTests to the new PassManager. 2016-07-11 18:10:06 +00:00
MergeFunctions.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
PartialInlining.cpp [PM] Port PartialInlining to the new PM 2016-06-27 16:50:18 +00:00
PassManagerBuilder.cpp [ThinLTO] Perform profile-guided indirect call promotion 2016-07-17 14:47:01 +00:00
PruneEH.cpp [PM] Some preparatory refactoring to minimize the diff of D21921 2016-07-02 19:12:56 +00:00
SampleProfile.cpp Implement callsite-hotness based inline cost for Sample-based PGO 2016-07-11 16:48:54 +00:00
StripDeadPrototypes.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
StripSymbols.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
WholeProgramDevirt.cpp Print remarks from WholeProgramDevirt pass for each call site. 2016-07-12 02:38:37 +00:00