15 #ifndef LLVM_ANALYSIS_LOOPPASS_H
16 #define LLVM_ANALYSIS_LOOPPASS_H
36 const std::string &Banner)
const override;
110 return "Loop Pass Manager";
120 assert(N <
PassVector.size() &&
"Pass number out of range!");
165 std::deque<Loop *> LQ;
Pass interface - Implemented by all 'passes'.
PassManagerType
Different types of internal pass managers.
virtual void deleteAnalysisLoop(Loop *L)
Delete analysis info associated with Loop L.
void assignPassManager(PMStack &PMS, PassManagerType PMT) override
Assign pass manager to manage this pass.
PMDataManager * getAsPMDataManager() override
void deleteSimpleAnalysisLoop(Loop *L)
Invoke deleteAnalysisLoop hook for all passes that implement simple analysis interface.
virtual bool doFinalization(Module &)
doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes...
PMStack - This class implements a stack data structure of PMDataManager pointers. ...
const char * getPassName() const override
getPassName - Return a nice clean name for a pass.
Pass * createPrinterPass(raw_ostream &O, const std::string &Banner) const override
getPrinterPass - Get a pass to print the function corresponding to a Loop.
void insertLoopIntoQueue(Loop *L)
virtual bool doInitialization(Module &)
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before ...
virtual bool doInitialization(Loop *L, LPPassManager &LPM)
void insertLoop(Loop *L, Loop *ParentLoop)
LLVM Basic Block Representation.
virtual bool doFinalization()
void getAnalysisUsage(AnalysisUsage &Info) const override
Pass Manager itself does not invalidate any analysis info.
Represent the analysis usage information of a pass.
FunctionPass class - This class is used to implement most global optimizations.
void deleteSimpleAnalysisValue(Value *V, Loop *L)
deleteSimpleAnalysisValue - Invoke deleteAnalysisValue hook for all passes that implement simple anal...
void deleteLoopFromQueue(Loop *L)
Delete loop from the loop queue and loop hierarchy (LoopInfo).
bool skipOptnoneFunction(const Loop *L) const
skipOptnoneFunction - Containing function has Attribute::OptimizeNone and most transformation passes ...
SmallVector< Pass *, 16 > PassVector
PassManagerType getPotentialPassManagerType() const override
Return what kind of Pass Manager can manage this pass.
void dumpPassStructure(unsigned Offset) override
Print passes managed by this manager.
void preparePassManager(PMStack &PMS) override
Check if available pass managers are suitable for this pass or not.
virtual bool runOnLoop(Loop *L, LPPassManager &LPM)=0
void cloneBasicBlockSimpleAnalysis(BasicBlock *From, BasicBlock *To, Loop *L)
SimpleAnalysis - Provides simple interface to update analysis info maintained by various passes...
LoopPass * getContainedPass(unsigned N)
PMDataManager provides the common place to manage the analysis data used by pass managers.
virtual void cloneBasicBlockAnalysis(BasicBlock *F, BasicBlock *T, Loop *L)
SimpleAnalysis - Provides simple interface to update analysis info maintained by various passes...
PassManagerType getPassManagerType() const override
LLVM Value Representation.
virtual void deleteAnalysisValue(Value *V, Loop *L)
deleteAnalysisValue - Delete analysis info associated with value V.
bool runOnFunction(Function &F) override
run - Execute all of the passes scheduled for execution.
This class implements an extremely fast bulk output stream that can only output to a stream...
Pass * getAsPass() override