1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 11:33:24 +02:00
llvm-mirror/include/llvm/Analysis
Easwaran Raman f04207e3b2 Add a pass to generate synthetic function entry counts.
Summary:
This pass synthesizes function entry counts by traversing the callgraph
and using the relative block frequencies of the callsites. The intended
use of these counts is in inlining to determine hot/cold callsites in
the absence of profile information.

The pass is split into two files with the code that propagates the
counts in a callgraph in a Utils file. I plan to add support for
propagation in the thinlto link phase and the propagation code will be
shared and hence this split. I did not add support to the old PM since
hot callsite determination in inlining is not possible in old PM
(although we could use hot callee heuristic with synthetic counts in the
old PM it is not worth the effort tuning it)

Reviewers: davidxl, silvas

Subscribers: mgorny, mehdi_amini, llvm-commits

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

llvm-svn: 322110
2018-01-09 19:39:35 +00:00
..
AliasAnalysis.h [ModRefInfo] Add must alias info to ModRefInfo. 2017-12-21 21:41:53 +00:00
AliasAnalysisEvaluator.h [ModRefInfo] Add must alias info to ModRefInfo. 2017-12-21 21:41:53 +00:00
AliasSetTracker.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-07-24 23:16:33 +00:00
AssumptionCache.h [Analysis, Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-09-01 21:37:29 +00:00
BasicAliasAnalysis.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-11 21:30:02 +00:00
BlockFrequencyInfo.h Revert r320104: infinite loop profiling bug fix 2017-12-08 19:38:07 +00:00
BlockFrequencyInfoImpl.h MachineFunction: Return reference from getFunction(); NFC 2017-12-15 22:22:58 +00:00
BranchProbabilityInfo.h [BranchProbabilityInfo] Handle irreducible loops. 2017-11-01 15:16:50 +00:00
CallGraph.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-07-24 23:16:33 +00:00
CallGraphSCCPass.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes. Also affected in files (NFC). 2017-08-31 21:56:16 +00:00
CallPrinter.h [CG] Rename the DOT printing pass to actually reference "DOT". 2016-03-10 11:04:40 +00:00
CaptureTracking.h
CFG.h [CFG] Fix typo in docblock: blocsk/blocks 2017-09-13 18:02:11 +00:00
CFGPrinter.h [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
CFLAliasAnalysisUtils.h [CFLAA] Move FunctionHandle to llvm::cflaa. 2017-06-27 02:43:00 +00:00
CFLAndersAliasAnalysis.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-11 21:30:02 +00:00
CFLSteensAliasAnalysis.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-11 21:30:02 +00:00
CGSCCPassManager.h [PM/CGSCC] Teach the CGSCC pass manager components to gracefully handle 2017-09-14 08:33:57 +00:00
CmpInstAnalysis.h [InstCombine][InstSimplify] Teach decomposeBitTestICmp to look through truncate instructions 2017-09-01 21:27:34 +00:00
CodeMetrics.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
ConstantFolding.h Reintroduce r320049, r320014 and r319894. 2017-12-13 11:21:18 +00:00
DemandedBits.h Prune whitespaces in blank lines. 2017-08-28 07:48:37 +00:00
DependenceAnalysis.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
DivergenceAnalysis.h [DivergenceAnalysis] Separated definition of class into header. 2015-09-21 17:58:14 +00:00
DominanceFrontier.h Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
DominanceFrontierImpl.h Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
DomPrinter.h
DOTGraphTraitsPass.h [DOTGraphTraits] Propagate Graph template argument, NFC 2017-07-24 12:55:00 +00:00
EHPersonalities.h [tsan] Add support for C++ exceptions into TSan (call __tsan_func_exit during unwinding), LLVM part 2016-11-14 21:41:13 +00:00
GlobalsModRef.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
IndirectCallPromotionAnalysis.h Separate the ICP total threshold and remaining threshold. 2017-07-28 01:02:54 +00:00
IndirectCallSiteVisitor.h IndirectCallSiteVisitor.h:findIndirectCallSites Don't mark header functions as file-scope static 2017-10-24 17:29:12 +00:00
InlineCost.h Rename OptimizationDiagnosticInfo.* to OptimizationRemarkEmitter.* 2017-10-09 23:19:02 +00:00
InstructionSimplify.h [NFC] Extract out a helper function for SimplifyCall(CS, Q) 2017-12-27 00:16:12 +00:00
Interval.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-07-24 23:16:33 +00:00
IntervalIterator.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-07-24 23:16:33 +00:00
IntervalPartition.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-07-24 23:16:33 +00:00
IteratedDominanceFrontier.h [Dominators] Make IsPostDominator a template parameter 2017-07-14 18:26:09 +00:00
IVUsers.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
LazyBlockFrequencyInfo.h [LazyBFI] Fix typos 2017-02-14 17:21:12 +00:00
LazyBranchProbabilityInfo.h [BPI] Don't assume that strcmp returning >0 is more likely than <0 2017-06-08 09:44:40 +00:00
LazyCallGraph.h [Analysis] Fix some Clang-tidy modernize-use-using and Include What You Use warnings; other minor fixes (NFC). 2017-08-11 21:30:02 +00:00
LazyValueInfo.h [JumpThreading] Teach jump threading how to analyze (and (cmp A, C1), (cmp A, C2)) after InstCombine has turned it into (cmp (add A, C3), C4) 2017-06-23 05:41:35 +00:00
Lint.h
Loads.h Make visible isDereferenceableAndAlignedPointer(..., const APInt &Size, ...) 2017-06-24 01:35:13 +00:00
LoopAccessAnalysis.h Revert r320548:[SLP] Vectorize jumbled memory loads 2017-12-20 15:26:59 +00:00
LoopAnalysisManager.h Add MemorySSA as loop dependency, disabled by default [NFC]. 2017-11-21 15:45:46 +00:00
LoopInfo.h [PM/Unswitch] Teach SimpleLoopUnswitch to do non-trivial unswitching, 2017-11-17 19:58:36 +00:00
LoopInfoImpl.h [PM/Unswitch] Teach SimpleLoopUnswitch to do non-trivial unswitching, 2017-11-17 19:58:36 +00:00
LoopIterator.h [Analysis] Revert r306472 changes in LoopInfo headers to fix broken builds. 2017-06-27 22:20:38 +00:00
LoopPass.h Use a BumpPtrAllocator for Loop objects 2017-09-28 02:45:42 +00:00
LoopUnrollAnalyzer.h Revert "Revert "[Unroll] Implement a conservative and monotonically increasing cost tracking system during the full unroll heuristic analysis that avoids counting any instruction cost until that instruction becomes "live" through a side-effect or use outside the..."" 2016-05-13 21:23:25 +00:00
MemoryBuiltins.h MemoryBuiltins.h: Don't mark header functions as file-scope static 2017-10-24 17:29:13 +00:00
MemoryDependenceAnalysis.h Revert "[memcpyopt] Teach memcpyopt to optimize across basic blocks" 2017-12-28 05:10:33 +00:00
MemoryLocation.h Allow None as a MemoryLocation to getModRefInfo 2017-08-01 00:28:29 +00:00
MemorySSA.h [Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-08-16 22:07:40 +00:00
MemorySSAUpdater.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ModuleSummaryAnalysis.h [Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-08-16 22:07:40 +00:00
ObjCARCAliasAnalysis.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
ObjCARCAnalysisUtils.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ObjCARCInstKind.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ObjectUtils.h Move llvm::canBeOmittedFromSymbolTable() to Analysis. 2017-03-31 04:46:31 +00:00
OptimizationRemarkEmitter.h Rename OptimizationDiagnosticInfo.* to OptimizationRemarkEmitter.* 2017-10-09 23:19:02 +00:00
OrderedBasicBlock.h Revert "Make OrderedInstructions and OrderedBasicBlock use AssertingVH, to try and catch mistakes" 2017-06-28 22:35:54 +00:00
Passes.h [PM] Port of the DepndenceAnalysis to the new PM. 2016-05-12 22:19:39 +00:00
PHITransAddr.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
PostDominators.h [Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-08-16 22:07:40 +00:00
ProfileSummaryInfo.h [PGO] Function section hotness prefix should look at all blocks 2017-12-20 17:53:10 +00:00
PtrUseVisitor.h [Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-08-18 23:51:26 +00:00
RegionInfo.h Reverting r315590; it did not include changes for llvm-tblgen, which is causing link errors for several people. 2017-10-15 14:32:27 +00:00
RegionInfoImpl.h RegionInfo: Use report_fatal_error instead of llvm_unreachable 2018-01-05 17:51:36 +00:00
RegionIterator.h Test commit 2017-06-29 09:46:01 +00:00
RegionPass.h Add opt-bisect support for region passes. 2017-06-01 21:22:26 +00:00
RegionPrinter.h [RegionInfo] Add debug-time region viewer functions 2015-08-10 13:21:59 +00:00
ScalarEvolution.h [LV] Support efficient vectorization of an induction with redundant casts 2017-12-14 07:56:31 +00:00
ScalarEvolutionAliasAnalysis.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
ScalarEvolutionExpander.h [SCEV] Fix Typo. NFC. 2017-12-20 15:06:26 +00:00
ScalarEvolutionExpressions.h [SCEV] : Simplify loop to range-loop.NFC. 2017-11-24 14:35:38 +00:00
ScalarEvolutionNormalization.h Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
ScopedNoAliasAA.h [Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-08-18 23:51:26 +00:00
SparsePropagation.h [SparsePropagation] Enable interprocedural analysis 2017-10-16 17:44:17 +00:00
SyntheticCountsUtils.h Add a pass to generate synthetic function entry counts. 2018-01-09 19:39:35 +00:00
TargetFolder.h [ConstnatFolding] Teach the folder how to fold ConstantVector 2016-07-29 03:27:26 +00:00
TargetLibraryInfo.def [SimplifyLibCalls] Inline calls to cabs when it's safe to do so 2017-12-16 01:26:25 +00:00
TargetLibraryInfo.h TargetLibraryInfo: Stop guessing wchar_t size 2017-09-26 02:36:57 +00:00
TargetTransformInfo.h Revert r321377, it causes regression to https://reviews.llvm.org/P8055. 2017-12-28 17:02:34 +00:00
TargetTransformInfoImpl.h Revert r321377, it causes regression to https://reviews.llvm.org/P8055. 2017-12-28 17:02:34 +00:00
Trace.h [Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-07-21 21:37:46 +00:00
TypeBasedAliasAnalysis.h [Analysis] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-08-18 23:51:26 +00:00
TypeMetadataUtils.h [cfi] CFI-ICall for ThinLTO. 2017-06-16 00:18:29 +00:00
ValueLattice.h [LVI] Move LVILatticeVal class to separate header file (NFC). 2017-09-28 11:09:22 +00:00
ValueLatticeUtils.h [IPSCCP] Move common functions to ValueLatticeUtils (NFC) 2017-10-13 17:53:44 +00:00
ValueTracking.h [InlineCost] Find repeated loads in the callee 2017-12-15 14:34:41 +00:00
VectorUtils.h [LV] Move interleaved access helper functions to VectorUtils (NFC) 2017-02-01 17:45:46 +00:00