LLVM: llvm::FunctionPass Class Reference (original) (raw)
FunctionPass class - This class is used to implement most global optimizations. More...
#include "[llvm/Pass.h](Pass%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| FunctionPass (char &pid) | |
| Pass * | createPrinterPass (raw_ostream &OS, const std::string &Banner) const override |
| createPrinterPass - Get a function printer pass. | |
| virtual bool | runOnFunction (Function &F)=0 |
| runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass. | |
| 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. | |
| PassManagerType | getPotentialPassManagerType () const override |
| Return what kind of Pass Manager can manage this pass. | |
| 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. | |
| StringRef | getPassArgument () const |
| Return a nice clean name for a pass corresponding to that used to enable the pass in opt. | |
| AnalysisID | getPassID () const |
| getPassID - Return the PassID number that corresponds to this pass. | |
| virtual bool | doInitialization (Module &) |
| doInitialization - Virtual method overridden by subclasses to do any necessary initialization before any pass is run. | |
| virtual bool | doFinalization (Module &) |
| doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes have run. | |
| virtual void | print (raw_ostream &OS, const Module *M) const |
| print - Print out the internal state of the pass. | |
| void | dump () const |
| virtual void | preparePassManager (PMStack &) |
| Check if available pass managers are suitable for this pass or not. | |
| 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. | |
| 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. | |
| 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. | |
| virtual void | dumpPassStructure (unsigned Offset=0) |
| template | |
| AnalysisType * | getAnalysisIfAvailable () const |
| getAnalysisIfAvailable() - Subclasses use this function to get analysis information that might be around, for example to update it. | |
| bool | mustPreserveAnalysisID (char &AID) const |
| mustPreserveAnalysisID - This method serves the same function as getAnalysisIfAvailable, but works if you just have an AnalysisID. | |
| template | |
| AnalysisType & | getAnalysis () const |
| getAnalysis() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
| template | |
| AnalysisType & | getAnalysis (Function &F, bool *Changed=nullptr) |
| getAnalysis() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
| template | |
| AnalysisType & | getAnalysisID (AnalysisID PI) const |
| template | |
| AnalysisType & | getAnalysisID (AnalysisID PI, Function &F, bool *Changed=nullptr) |
| Protected Member Functions | |
|---|---|
| bool | skipFunction (const Function &F) const |
| Optional passes call this function to check whether the pass should be skipped. |
FunctionPass class - This class is used to implement most global optimizations.
Optimizations should subclass this class if they meet the following constraints:
- Optimizations are organized globally, i.e., a function at a time
- Optimizing a function does not cause the addition or removal of any functions in the module
Definition at line 314 of file Pass.h.
| llvm::FunctionPass::FunctionPass ( char & pid) | inlineexplicit |
|---|
Definition at line 316 of file Pass.h.
References llvm::Pass::Pass(), and llvm::PT_Function.
Referenced by llvm::AAResultsWrapperPass::AAResultsWrapperPass(), AMDGPUAnnotateUniformValuesLegacy::AMDGPUAnnotateUniformValuesLegacy(), AMDGPULateCodeGenPrepareLegacy::AMDGPULateCodeGenPrepareLegacy(), llvm::AssignmentTrackingAnalysis::AssignmentTrackingAnalysis(), llvm::BasicAAWrapperPass::BasicAAWrapperPass(), llvm::BlockFrequencyInfoWrapperPass::BlockFrequencyInfoWrapperPass(), llvm::BranchProbabilityInfoWrapperPass::BranchProbabilityInfoWrapperPass(), llvm::CycleInfoWrapperPass::CycleInfoWrapperPass(), llvm::DependenceAnalysisWrapperPass::DependenceAnalysisWrapperPass(), llvm::DominanceFrontierWrapperPass::DominanceFrontierWrapperPass(), llvm::DominatorTreeWrapperPass::DominatorTreeWrapperPass(), llvm::DOTGraphTraitsPrinterWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::DOTGraphTraitsPrinterWrapperPass(), llvm::DOTGraphTraitsViewerWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >::DOTGraphTraitsViewerWrapperPass(), llvm::SCEV::FoldingSetTrait< SCEV >, llvm::gvn::GVNLegacyPass::GVNLegacyPass(), llvm::InstructionCombiningPass::InstructionCombiningPass(), llvm::LazyBlockFrequencyInfoPass::LazyBlockFrequencyInfoPass(), llvm::LazyBranchProbabilityInfoPass::LazyBranchProbabilityInfoPass(), llvm::LazyValueInfoWrapperPass::LazyValueInfoWrapperPass(), llvm::LCSSAVerificationPass::LCSSAVerificationPass(), llvm::LoopInfoWrapperPass::LoopInfoWrapperPass(), llvm::LPPassManager::LPPassManager(), llvm::MachineFunctionPass::MachineFunctionPass(), llvm::MemoryDependenceWrapperPass::MemoryDependenceWrapperPass(), llvm::MemorySSAWrapperPass::MemorySSAWrapperPass(), llvm::OptimizationRemarkEmitterWrapperPass::OptimizationRemarkEmitterWrapperPass(), llvm::PhiValuesWrapperPass::PhiValuesWrapperPass(), llvm::PostDominatorTreeWrapperPass::PostDominatorTreeWrapperPass(), llvm::RegionInfoPass::RegionInfoPass(), llvm::ReplaceWithVeclibLegacy::ReplaceWithVeclibLegacy(), llvm::RGPassManager::RGPassManager(), llvm::ScalarEvolutionWrapperPass::ScalarEvolutionWrapperPass(), llvm::SCEVAAWrapperPass::SCEVAAWrapperPass(), SIAnnotateControlFlowLegacy::SIAnnotateControlFlowLegacy(), llvm::SPIRVConvergenceRegionAnalysisWrapperPass::SPIRVConvergenceRegionAnalysisWrapperPass(), llvm::StackProtector::StackProtector(), llvm::StackSafetyInfoWrapperPass::StackSafetyInfoWrapperPass(), and llvm::UniformityInfoWrapperPass::UniformityInfoWrapperPass().
◆ assignPassManager()
◆ createPrinterPass()
createPrinterPass - Get a function printer pass.
Implements llvm::Pass.
Definition at line 175 of file Pass.cpp.
◆ getPotentialPassManagerType()
| PassManagerType FunctionPass::getPotentialPassManagerType ( ) const | overridevirtual |
|---|
Return what kind of Pass Manager can manage this pass.
Reimplemented from llvm::Pass.
Definition at line 180 of file Pass.cpp.
Referenced by runOnFunction().
◆ runOnFunction()
| virtual bool llvm::FunctionPass::runOnFunction ( Function & F) | pure virtual |
|---|
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.
Implemented in AMDGPUAnnotateUniformValuesLegacy, AMDGPULateCodeGenPrepareLegacy, llvm::AAResultsWrapperPass, llvm::AssignmentTrackingAnalysis, llvm::BasicAAWrapperPass, llvm::BlockFrequencyInfoWrapperPass, llvm::BranchProbabilityInfoWrapperPass, llvm::CycleInfoWrapperPass, llvm::DependenceAnalysisWrapperPass, llvm::DominanceFrontierWrapperPass, llvm::DominatorTreeWrapperPass, llvm::DOTGraphTraitsPrinterWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >, llvm::DOTGraphTraitsViewerWrapperPass< AnalysisT, IsSimple, GraphT, AnalysisGraphTraitsT >, llvm::gvn::GVNLegacyPass, llvm::InstructionCombiningPass, llvm::LazyBlockFrequencyInfoPass, llvm::LazyBranchProbabilityInfoPass, llvm::LazyValueInfoWrapperPass, llvm::LCSSAVerificationPass, llvm::LoopInfoWrapperPass, llvm::LPPassManager, llvm::MemoryDependenceWrapperPass, llvm::MemorySSAWrapperPass, llvm::OptimizationRemarkEmitterWrapperPass, llvm::PhiValuesWrapperPass, llvm::PostDominatorTreeWrapperPass, llvm::RegionInfoPass, llvm::ReplaceWithVeclibLegacy, llvm::RGPassManager, llvm::ScalarEvolutionWrapperPass, llvm::SCEVAAWrapperPass, llvm::SPIRVConvergenceRegionAnalysisWrapperPass, llvm::StackProtector, llvm::StackSafetyInfoWrapperPass, llvm::UniformityInfoWrapperPass, and SIAnnotateControlFlowLegacy.
References assignPassManager(), F, getPotentialPassManagerType(), skipFunction(), and T.
◆ skipFunction()
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 188 of file Pass.cpp.
Referenced by AMDGPUAnnotateUniformValuesLegacy::runOnFunction(), AMDGPULateCodeGenPrepareLegacy::runOnFunction(), runOnFunction(), llvm::gvn::GVNLegacyPass::runOnFunction(), llvm::InstructionCombiningPass::runOnFunction(), llvm::ARMBlockPlacement::runOnMachineFunction(), llvm::ExecutionDomainFix::runOnMachineFunction(), llvm::IRTranslator::runOnMachineFunction(), llvm::MachinePipeliner::runOnMachineFunction(), llvm::SelectionDAGISelLegacy::runOnMachineFunction(), and RemoveLoadsIntoFakeUsesLegacy::runOnMachineFunction().
The documentation for this class was generated from the following files:
- include/llvm/Pass.h
- lib/IR/LegacyPassManager.cpp
- lib/SandboxIR/Pass.cpp