class HotColdSplitting

Declaration

class HotColdSplitting { /* full declaration omitted */ };

Declared at: llvm/include/llvm/Transforms/IPO/HotColdSplitting.h:33

Member Variables

private llvm::ProfileSummaryInfo* PSI
private function_ref<llvm::BlockFrequencyInfo*( llvm::Function&)> GetBFI
private function_ref<llvm::TargetTransformInfo&( llvm::Function&)> GetTTI
private std::function<OptimizationRemarkEmitter&( Function&)>* GetORE
private function_ref<llvm::AssumptionCache*( llvm::Function&)> LookupAC

Method Overview

  • public HotColdSplitting(llvm::ProfileSummaryInfo * ProfSI, function_ref<llvm::BlockFrequencyInfo *(llvm::Function &)> GBFI, function_ref<llvm::TargetTransformInfo &(llvm::Function &)> GTTI, std::function<OptimizationRemarkEmitter &(Function &)> * GORE, function_ref<llvm::AssumptionCache *(llvm::Function &)> LAC)
  • private llvm::Function * extractColdRegion(const llvm::BlockSequence & Region, const llvm::CodeExtractorAnalysisCache & CEAC, llvm::DominatorTree & DT, llvm::BlockFrequencyInfo * BFI, llvm::TargetTransformInfo & TTI, llvm::OptimizationRemarkEmitter & ORE, llvm::AssumptionCache * AC, unsigned int Count)
  • private bool isFunctionCold(const llvm::Function & F) const
  • private bool outlineColdRegions(llvm::Function & F, bool HasProfileSummary)
  • public bool run(llvm::Module & M)
  • private bool shouldOutlineFrom(const llvm::Function & F) const

Methods

HotColdSplitting(
    llvm::ProfileSummaryInfo* ProfSI,
    function_ref<llvm::BlockFrequencyInfo*(
        llvm::Function&)> GBFI,
    function_ref<llvm::TargetTransformInfo&(
        llvm::Function&)> GTTI,
    std::function<OptimizationRemarkEmitter&(
        Function&)>* GORE,
    function_ref<llvm::AssumptionCache*(
        llvm::Function&)> LAC)

Declared at: llvm/include/llvm/Transforms/IPO/HotColdSplitting.h:35

Parameters

llvm::ProfileSummaryInfo* ProfSI
function_ref<llvm::BlockFrequencyInfo*( llvm::Function&)> GBFI
function_ref<llvm::TargetTransformInfo&( llvm::Function&)> GTTI
std::function<OptimizationRemarkEmitter&( Function&)>* GORE
function_ref<llvm::AssumptionCache*( llvm::Function&)> LAC

llvm::Function* extractColdRegion(
    const llvm::BlockSequence& Region,
    const llvm::CodeExtractorAnalysisCache& CEAC,
    llvm::DominatorTree& DT,
    llvm::BlockFrequencyInfo* BFI,
    llvm::TargetTransformInfo& TTI,
    llvm::OptimizationRemarkEmitter& ORE,
    llvm::AssumptionCache* AC,
    unsigned int Count)

Declared at: llvm/include/llvm/Transforms/IPO/HotColdSplitting.h:47

Parameters

const llvm::BlockSequence& Region
const llvm::CodeExtractorAnalysisCache& CEAC
llvm::DominatorTree& DT
llvm::BlockFrequencyInfo* BFI
llvm::TargetTransformInfo& TTI
llvm::OptimizationRemarkEmitter& ORE
llvm::AssumptionCache* AC
unsigned int Count

bool isFunctionCold(const llvm::Function& F) const

Declared at: llvm/include/llvm/Transforms/IPO/HotColdSplitting.h:44

Parameters

const llvm::Function& F

bool outlineColdRegions(llvm::Function& F,
                        bool HasProfileSummary)

Declared at: llvm/include/llvm/Transforms/IPO/HotColdSplitting.h:46

Parameters

llvm::Function& F
bool HasProfileSummary

bool run(llvm::Module& M)

Declared at: llvm/include/llvm/Transforms/IPO/HotColdSplitting.h:41

Parameters

llvm::Module& M

bool shouldOutlineFrom(
    const llvm::Function& F) const

Declared at: llvm/include/llvm/Transforms/IPO/HotColdSplitting.h:45

Parameters

const llvm::Function& F