llvm-project/llvm/lib/Transforms/IPO
Dehao Chen 62b9c33e1e Import all inlined indirect call targets for SamplePGO.
Summary: In the ThinLTO compilation, if a function is inlined in the profiling binary, we need to inline it before annotation. If the callee is not available in the primary module, a first step is needed to import that callee function. For the current implementation, if the call is an indirect call, which has been promoted to >1 targets and inlined, SamplePGO will only import one target with the largest sample count. This patch fixed the bug to import all targets instead.

Reviewers: tejohnson, davidxl

Reviewed By: tejohnson

Subscribers: sanjoy, llvm-commits, mehdi_amini

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

llvm-svn: 313678
2017-09-19 21:18:14 +00:00
..
AlwaysInliner.cpp [PM] Teach the always inliner in the new pass manager to support 2016-12-26 23:43:27 +00:00
ArgumentPromotion.cpp [ArgPromotion] Preserve alignment of byval argument in new alloca 2017-08-04 17:09:11 +00:00
BarrierNoopPass.cpp
CMakeLists.txt IPO: Introduce ThinLTOBitcodeWriter pass. 2016-12-16 00:26:30 +00:00
ConstantMerge.cpp Don't merge global constants with non-dbg metadata. 2017-03-09 00:03:37 +00:00
CrossDSOCFI.cpp [cfi] Fixed non-determinism in codegen due to DenseSet iteration order 2017-08-30 04:47:21 +00:00
DeadArgumentElimination.cpp [DAE] Simplify attribute list creation, NFC 2017-04-19 23:45:45 +00:00
ElimAvailExtern.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ExtractGV.cpp [ExtractGV] Fix the doxygen comment on the constructor and the class to refer to global values instead of functions. While there fix an 80 column violation. NFC 2017-06-08 23:38:19 +00:00
ForceFunctionAttrs.cpp Add strictfp attribute to prevent unwanted optimizations of libm calls 2017-08-14 21:15:13 +00:00
FunctionAttrs.cpp Merge isKnownNonNull into isKnownNonZero 2017-09-09 18:23:11 +00:00
FunctionImport.cpp Reland r313157, "ThinLTO: Correctly follow aliasee references when dead stripping." which was reverted in r313222. 2017-09-14 05:02:59 +00:00
GlobalDCE.cpp Global DCE performance improvement 2017-01-27 19:48:57 +00:00
GlobalOpt.cpp Revert r312318, r312325, r312424, r312489 2017-09-07 23:20:35 +00:00
GlobalSplit.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
IPConstantPropagation.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
IPO.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
InferFunctionAttrs.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
InlineSimple.cpp [Inliner] Only compute fully inline cost when remarks are enabled. 2017-08-25 22:01:42 +00:00
Inliner.cpp [InlineCost] Add cl::opt to allow full inline cost to be computed for debugging purposes. 2017-08-21 20:00:09 +00:00
Internalize.cpp Consistently use ModuleAnalysisManager 2016-08-09 00:28:38 +00:00
LLVMBuild.txt IPO: Add missing build dep. 2017-05-01 20:57:20 +00:00
LoopExtractor.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
LowerTypeTests.cpp Reland r313157, "ThinLTO: Correctly follow aliasee references when dead stripping." which was reverted in r313222. 2017-09-14 05:02:59 +00:00
MergeFunctions.cpp [MergeFunctions] Remove alias support. 2017-07-27 19:36:13 +00:00
PartialInlining.cpp Sink some IntrinsicInst.h and Intrinsics.h out of llvm/include 2017-09-07 23:27:44 +00:00
PassManagerBuilder.cpp [DivRempairs] add a pass to optimize div/rem pairs (PR31028) 2017-09-09 13:38:18 +00:00
PruneEH.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
SampleProfile.cpp Import all inlined indirect call targets for SamplePGO. 2017-09-19 21:18:14 +00:00
StripDeadPrototypes.cpp
StripSymbols.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ThinLTOBitcodeWriter.cpp ThinLTO Minimized Bitcode File Size Reduction 2017-07-21 17:25:20 +00:00
WholeProgramDevirt.cpp WholeProgramDevirt: Add import/export support for targets without absolute symbol constants. 2017-09-11 22:34:42 +00:00