Go to the documentation of this file.
13 #ifndef LLVM_ANALYSIS_MODULESUMMARYANALYSIS_H
14 #define LLVM_ANALYSIS_MODULESUMMARYANALYSIS_H
24 class BlockFrequencyInfo;
27 class ProfileSummaryInfo;
28 class StackSafetyInfo;
38 std::function<BlockFrequencyInfo *(
const Function &
F)> GetBFICallback,
39 ProfileSummaryInfo *PSI,
40 std::function<
const StackSafetyInfo *(
const Function &
F)> GetSSICallback =
41 [](
const Function &
F) ->
const StackSafetyInfo * {
return nullptr; });
104 #endif // LLVM_ANALYSIS_MODULESUMMARYANALYSIS_H
This is an optimization pass for GlobalISel generic memory operations.
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
ImmutablePass class - This class is used to provide information that does not need to be run.
Legacy wrapper pass to provide the ModuleSummaryIndex object.
Analysis pass to provide the ModuleSummaryIndex object.
ModuleSummaryIndexWrapperPass()
ImmutablePass * createImmutableModuleSummaryIndexWrapperPass(const ModuleSummaryIndex *Index)
const ModuleSummaryIndex * getIndex() const
Represent the analysis usage information of a pass.
Result run(Module &M, ModuleAnalysisManager &AM)
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
ImmutableModuleSummaryIndexWrapperPass(const ModuleSummaryIndex *Index=nullptr)
A special type used by analysis passes to provide an address that identifies that particular analysis...
print Print MemDeps of function
A Module instance is used to store all the information related to an LLVM module.
A CRTP mix-in that provides informational APIs needed for analysis passes.
ModuleSummaryIndex & getIndex()
Get the index built by pass.
bool doFinalization(Module &M) override
doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes...
Machine Check Debug Module
ModulePass * createModuleSummaryIndexWrapperPass()
const ModuleSummaryIndex & getIndex() const
ModuleSummaryIndex buildModuleSummaryIndex(const Module &M, std::function< BlockFrequencyInfo *(const Function &F)> GetBFICallback, ProfileSummaryInfo *PSI, std::function< const StackSafetyInfo *(const Function &F)> GetSSICallback=[](const Function &F) -> const StackSafetyInfo *{ return nullptr;})
Direct function to compute a ModuleSummaryIndex from a given module.
bool runOnModule(Module &M) override
runOnModule - Virtual method overriden by subclasses to process the module being operated on.
Class to hold module path string table and global value map, and encapsulate methods for operating on...
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
A container for analyses that lazily runs them and caches their results.
Legacy wrapper pass to provide the ModuleSummaryIndex object.