|
class | CallsiteContextGraph< DerivedCCG, FuncTy, CallTy > |
| CRTP base for graphs built from either IR or ThinLTO summary index. More...
|
|
struct | CallsiteContextGraph< DerivedCCG, FuncTy, CallTy >::FuncInfo |
| Represents a function clone via FuncTy pointer and clone number pair. More...
|
|
struct | CallsiteContextGraph< DerivedCCG, FuncTy, CallTy >::CallInfo |
| Represents a callsite clone via CallTy and clone number pair. More...
|
|
struct | CallsiteContextGraph< DerivedCCG, FuncTy, CallTy >::ContextNode |
| Node in the Callsite Context Graph. More...
|
|
struct | CallsiteContextGraph< DerivedCCG, FuncTy, CallTy >::ContextEdge |
| Edge in the Callsite Context Graph from a ContextNode N to a caller or callee. More...
|
|
class | ModuleCallsiteContextGraph |
| CRTP derived class for graphs built from IR (regular LTO). More...
|
|
struct | IndexCall |
| Represents a call in the summary index graph, which can either be an allocation or an interior callsite node in an allocation's context. More...
|
|
class | IndexCallsiteContextGraph |
| CRTP derived class for graphs built from summary index (ThinLTO). More...
|
|
struct | llvm::DenseMapInfo< typename CallsiteContextGraph< ModuleCallsiteContextGraph, Function, Instruction * >::CallInfo > |
|
struct | llvm::DenseMapInfo< typename CallsiteContextGraph< IndexCallsiteContextGraph, FunctionSummary, IndexCall >::CallInfo > |
|
struct | llvm::DenseMapInfo< IndexCall > |
|
struct | GraphTraits< const CallsiteContextGraph< DerivedCCG, FuncTy, CallTy > * > |
|
struct | DOTGraphTraits< const CallsiteContextGraph< DerivedCCG, FuncTy, CallTy > * > |
|
|
template<typename DerivedCCG , typename FuncTy , typename CallTy > |
using | ContextNode = typename CallsiteContextGraph< DerivedCCG, FuncTy, CallTy >::ContextNode |
|
template<typename DerivedCCG , typename FuncTy , typename CallTy > |
using | ContextEdge = typename CallsiteContextGraph< DerivedCCG, FuncTy, CallTy >::ContextEdge |
|
template<typename DerivedCCG , typename FuncTy , typename CallTy > |
using | FuncInfo = typename CallsiteContextGraph< DerivedCCG, FuncTy, CallTy >::FuncInfo |
|
template<typename DerivedCCG , typename FuncTy , typename CallTy > |
using | CallInfo = typename CallsiteContextGraph< DerivedCCG, FuncTy, CallTy >::CallInfo |
|
|
| STATISTIC (FunctionClonesAnalysis, "Number of function clones created during whole program analysis") |
|
| STATISTIC (FunctionClonesThinBackend, "Number of function clones created during ThinLTO backend") |
|
| STATISTIC (FunctionsClonedThinBackend, "Number of functions that had clones created during ThinLTO backend") |
|
| STATISTIC (AllocTypeNotCold, "Number of not cold static allocations (possibly " "cloned) during whole program analysis") |
|
| STATISTIC (AllocTypeCold, "Number of cold static allocations (possibly cloned) " "during whole program analysis") |
|
| STATISTIC (AllocTypeNotColdThinBackend, "Number of not cold static allocations (possibly cloned) during " "ThinLTO backend") |
|
| STATISTIC (AllocTypeColdThinBackend, "Number of cold static allocations " "(possibly cloned) during ThinLTO backend") |
|
| STATISTIC (OrigAllocsThinBackend, "Number of original (not cloned) allocations with memprof profiles " "during ThinLTO backend") |
|
| STATISTIC (AllocVersionsThinBackend, "Number of allocation versions (including clones) during ThinLTO backend") |
|
| STATISTIC (MaxAllocVersionsThinBackend, "Maximum number of allocation versions created for an original " "allocation during ThinLTO backend") |
|
| STATISTIC (UnclonableAllocsThinBackend, "Number of unclonable ambigous allocations during ThinLTO backend") |
|
static std::string | getMemProfFuncName (Twine Base, unsigned CloneNo) |
|
static std::string | getAllocTypeString (uint8_t AllocTypes) |
|
template<typename DerivedCCG , typename FuncTy , typename CallTy > |
static void | checkEdge (const std::shared_ptr< ContextEdge< DerivedCCG, FuncTy, CallTy > > &Edge) |
|
template<typename DerivedCCG , typename FuncTy , typename CallTy > |
static void | checkNode (const ContextNode< DerivedCCG, FuncTy, CallTy > *Node, bool CheckEdges=true) |
|
bool | checkColdOrNotCold (uint8_t AllocType) |
|
static SmallVector< std::unique_ptr< ValueToValueMapTy >, 4 > | createFunctionClones (Function &F, unsigned NumClones, Module &M, OptimizationRemarkEmitter &ORE, std::map< const Function *, SmallPtrSet< const GlobalAlias *, 1 > > &FuncToAliasMap) |
|
static ValueInfo | findValueInfoForFunc (const Function &F, const Module &M, const ModuleSummaryIndex *ImportSummary) |
|
|
static cl::opt< std::string > | DotFilePathPrefix ("memprof-dot-file-path-prefix", cl::init(""), cl::Hidden, cl::value_desc("filename"), cl::desc("Specify the path prefix of the MemProf dot files.")) |
|
static cl::opt< bool > | ExportToDot ("memprof-export-to-dot", cl::init(false), cl::Hidden, cl::desc("Export graph to dot files.")) |
|
static cl::opt< bool > | DumpCCG ("memprof-dump-ccg", cl::init(false), cl::Hidden, cl::desc("Dump CallingContextGraph to stdout after each stage.")) |
|
static cl::opt< bool > | VerifyCCG ("memprof-verify-ccg", cl::init(false), cl::Hidden, cl::desc("Perform verification checks on CallingContextGraph.")) |
|
static cl::opt< bool > | VerifyNodes ("memprof-verify-nodes", cl::init(false), cl::Hidden, cl::desc("Perform frequent verification checks on nodes.")) |
|
static cl::opt< std::string > | MemProfImportSummary ("memprof-import-summary", cl::desc("Import summary to use for testing the ThinLTO backend via opt"), cl::Hidden) |
|
cl::opt< bool > | SupportsHotColdNew ("supports-hot-cold-new", cl::init(false), cl::Hidden, cl::desc("Linking with hot/cold operator new interfaces")) |
|
static const std::string | MemProfCloneSuffix = ".memprof." |
|