12#ifndef LLVM_TRANSFORMS_IPO_HOTCOLDSPLITTING_H
13#define LLVM_TRANSFORMS_IPO_HOTCOLDSPLITTING_H
21class ProfileSummaryInfo;
23class BlockFrequencyInfo;
24class TargetTransformInfo;
25class OptimizationRemarkEmitter;
29class CodeExtractorAnalysisCache;
43 : PSI(ProfSI), GetBFI(GBFI), GetTTI(GTTI), GetORE(GORE), LookupAC(LAC) {}
47 bool isFunctionCold(
const Function &
F)
const;
51 bool shouldOutlineFrom(
const Function &
F)
const;
52 bool outlineColdRegions(
Function &
F,
bool HasProfileSummary);
This header defines various interfaces for pass management in LLVM.
Machine Check Debug Module
A container for analyses that lazily runs them and caches their results.
A cache of @llvm.assume calls within a function.
LLVM Basic Block Representation.
BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate IR basic block frequen...
Pass to outline cold regions.
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
HotColdSplitting(ProfileSummaryInfo *ProfSI, function_ref< BlockFrequencyInfo *(Function &)> GBFI, function_ref< TargetTransformInfo &(Function &)> GTTI, std::function< OptimizationRemarkEmitter &(Function &)> *GORE, function_ref< AssumptionCache *(Function &)> LAC)
A Module instance is used to store all the information related to an LLVM module.
A set of analyses that are preserved following a run of a transformation pass.
Analysis providing profile information.
A templated base class for SmallPtrSet which provides the typesafe interface that is common across al...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
An efficient, type-erasing, non-owning reference to a callable.
@ BasicBlock
Various leaf nodes.
This is an optimization pass for GlobalISel generic memory operations.
A CRTP mix-in to automatically provide informational APIs needed for passes.