LLVM
8.0.1
|
FunctionPass class - This class is used to implement most global optimizations. More...
#include "llvm/Pass.h"
Public Member Functions | |
FunctionPass (char &pid) | |
Pass * | createPrinterPass (raw_ostream &OS, const std::string &Banner) const override |
createPrinterPass - Get a function printer pass. More... | |
virtual bool | runOnFunction (Function &F)=0 |
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass. More... | |
void | assignPassManager (PMStack &PMS, PassManagerType T) override |
Find appropriate Function Pass Manager or Call Graph Pass Manager in the PM Stack and add self into that manager. More... | |
PassManagerType | getPotentialPassManagerType () const override |
Return what kind of Pass Manager can manage this pass. More... | |
Public Member Functions inherited from llvm::Pass | |
Pass (PassKind K, char &pid) | |
Pass (const Pass &)=delete | |
Pass & | operator= (const Pass &)=delete |
virtual | ~Pass () |
PassKind | getPassKind () const |
virtual StringRef | getPassName () const |
getPassName - Return a nice clean name for a pass. More... | |
AnalysisID | getPassID () const |
getPassID - Return the PassID number that corresponds to this pass. More... | |
virtual bool | doInitialization (Module &) |
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before any pass is run. More... | |
virtual bool | doFinalization (Module &) |
doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes have run. More... | |
virtual void | print (raw_ostream &OS, const Module *M) const |
print - Print out the internal state of the pass. More... | |
void | dump () const |
virtual void | preparePassManager (PMStack &) |
Check if available pass managers are suitable for this pass or not. More... | |
void | setResolver (AnalysisResolver *AR) |
AnalysisResolver * | getResolver () const |
virtual void | getAnalysisUsage (AnalysisUsage &) const |
getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. More... | |
virtual void | releaseMemory () |
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memory when it is no longer needed. More... | |
virtual void * | getAdjustedAnalysisPointer (AnalysisID ID) |
getAdjustedAnalysisPointer - This method is used when a pass implements an analysis interface through multiple inheritance. More... | |
virtual ImmutablePass * | getAsImmutablePass () |
virtual PMDataManager * | getAsPMDataManager () |
virtual void | verifyAnalysis () const |
verifyAnalysis() - This member can be implemented by a analysis pass to check state of analysis information. More... | |
virtual void | dumpPassStructure (unsigned Offset=0) |
template<typename AnalysisType > | |
AnalysisType * | getAnalysisIfAvailable () const |
getAnalysisIfAvailable<AnalysisType>() - Subclasses use this function to get analysis information that might be around, for example to update it. More... | |
bool | mustPreserveAnalysisID (char &AID) const |
mustPreserveAnalysisID - This method serves the same function as getAnalysisIfAvailable, but works if you just have an AnalysisID. More... | |
template<typename AnalysisType > | |
AnalysisType & | getAnalysis () const |
getAnalysis<AnalysisType>() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. More... | |
template<typename AnalysisType > | |
AnalysisType & | getAnalysis (Function &F) |
getAnalysis<AnalysisType>() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. More... | |
template<typename AnalysisType > | |
AnalysisType & | getAnalysisID (AnalysisID PI) const |
template<typename AnalysisType > | |
AnalysisType & | getAnalysisID (AnalysisID PI, Function &F) |
Protected Member Functions | |
bool | skipFunction (const Function &F) const |
Optional passes call this function to check whether the pass should be skipped. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from llvm::Pass | |
static const PassInfo * | lookupPassInfo (const void *TI) |
static const PassInfo * | lookupPassInfo (StringRef Arg) |
static Pass * | createPass (AnalysisID ID) |
FunctionPass class - This class is used to implement most global optimizations.
Optimizations should subclass this class if they meet the following constraints:
|
inlineexplicit |
Definition at line 287 of file Pass.h.
References llvm::Pass::assignPassManager(), llvm::Pass::createPrinterPass(), F(), llvm::Pass::getPotentialPassManagerType(), and runOnFunction().
|
overridevirtual |
Find appropriate Function Pass Manager or Call Graph Pass Manager in the PM Stack and add self into that manager.
Reimplemented from llvm::Pass.
Definition at line 1957 of file LegacyPassManager.cpp.
References llvm::PMDataManager::add(), llvm::PMTopLevelManager::addIndirectPassManager(), assert(), llvm::ModulePass::assignPassManager(), llvm::PMStack::empty(), llvm::PMDataManager::getPassManagerType(), llvm::PMT_FunctionPassManager, llvm::PMStack::pop(), llvm::PMDataManager::populateInheritedAnalysis(), llvm::PMStack::push(), and llvm::PMStack::top().
|
overridevirtual |
createPrinterPass - Get a function printer pass.
Implements llvm::Pass.
Definition at line 149 of file Pass.cpp.
References llvm::createPrintFunctionPass().
|
overridevirtual |
Return what kind of Pass Manager can manage this pass.
Reimplemented from llvm::Pass.
Definition at line 154 of file Pass.cpp.
References llvm::PMT_FunctionPassManager.
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.
Implemented in llvm::sroa::SROALegacyPass, llvm::gvn::GVNLegacyPass, llvm::ScalarEvolutionWrapperPass, llvm::GVNHoistLegacyPass, llvm::AAResultsWrapperPass, llvm::LoopInfoWrapperPass, llvm::MemorySSAWrapperPass, llvm::RegionInfoPass, llvm::DependenceAnalysisWrapperPass, llvm::MemorySSAPrinterLegacyPass, llvm::LoopAccessLegacyAnalysis, llvm::MemoryDependenceWrapperPass, llvm::AAEvalLegacyPass, llvm::PredicateInfoPrinterLegacyPass, llvm::DominatorTreeWrapperPass, llvm::BasicAAWrapperPass, llvm::BranchProbabilityInfoWrapperPass, llvm::DominanceFrontierWrapperPass, llvm::LCSSAVerificationPass, llvm::LazyValueInfoWrapperPass, llvm::PhiValuesWrapperPass, llvm::BlockFrequencyInfoWrapperPass, llvm::OptimizationRemarkEmitterWrapperPass, llvm::LazyBlockFrequencyInfoPass, llvm::StackProtector, llvm::LazyBranchProbabilityInfoPass, llvm::LPPassManager, llvm::RGPassManager, llvm::DemandedBitsWrapperPass, llvm::DOTGraphTraitsPrinter< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >, llvm::PostDominatorTreeWrapperPass, llvm::StackSafetyInfoWrapperPass, llvm::SCEVAAWrapperPass, llvm::IntervalPartition, llvm::InstructionCombiningPass, llvm::DOTGraphTraitsViewer< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >, llvm::UnifyFunctionExitNodes, llvm::LegacyDivergenceAnalysis, and llvm::AMDGPUPerfHintAnalysis.
Referenced by llvm::FPPassManager::runOnFunction().
Optional passes call this function to check whether the pass should be skipped.
This is the case when Attribute::OptimizeNone is set or when optimization bisect is over the limit.
Definition at line 158 of file Pass.cpp.
References llvm::dbgs(), llvm::Function::getContext(), llvm::Value::getName(), llvm::LLVMContext::getOptPassGate(), llvm::Pass::getPassName(), llvm::Function::hasFnAttribute(), LLVM_DEBUG, llvm::Attribute::OptimizeNone, and llvm::OptPassGate::shouldRunPass().
Referenced by llvm::BreakFalseDeps::runOnMachineFunction(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::ReachingDefAnalysis::runOnMachineFunction(), and llvm::ExecutionDomainFix::runOnMachineFunction().