14 #ifndef LLVM_PASSMANAGERS_H
15 #define LLVM_PASSMANAGERS_H
123 : P(p), V(0), M(0) {}
125 : P(p), V(&v), M(0) {}
127 : P(p), V(0), M(&m) {}
146 typedef std::vector<PMDataManager *>::const_reverse_iterator
iterator;
153 bool empty()
const {
return S.empty(); }
158 std::vector<PMDataManager *> S;
206 ImmutablePasses.push_back(P);
210 return ImmutablePasses;
220 IndirectPassManagers.push_back(Manager);
293 void add(
Pass *
P,
bool ProcessAnalysis =
true);
304 AvailableAnalysis.clear();
305 for (
unsigned i = 0; i <
PMT_Last; ++i)
336 void setDepth(
unsigned newDepth) { Depth = newDepth; }
351 assert ( 0 &&
"Invalid use of getPassManagerType");
356 return &AvailableAnalysis;
452 return "Function Pass Manager";
456 assert ( N <
PassVector.size() &&
"Pass number out of range!");
bool preserveHigherLevelAnalysis(Pass *P)
void initializeAllAnalysisInfo()
PassManagerPrettyStackEntry(Pass *p, Value &v)
bool doFinalization(Module &M)
Pass * findAnalysisPass(AnalysisID AID, bool Direction)
virtual PMDataManager * getAsPMDataManager()
void dumpLastUses(Pass *P, unsigned Offset) const
The main container class for the LLVM Intermediate Representation.
std::vector< PMDataManager * >::const_reverse_iterator iterator
unsigned getNumContainedManagers() const
virtual Pass * getAsPass()
void collectRequiredAnalysis(SmallVectorImpl< Pass * > &RequiredPasses, SmallVectorImpl< AnalysisID > &ReqPassNotAvailable, Pass *P)
void dumpRequiredSet(const Pass *P) const
bool doInitialization(Module &M)
bool runOnModule(Module &M)
PMTopLevelManager(PMDataManager *PMDM)
Initialize top level manager. Create first pass manager.
void dumpPassInfo(Pass *P, enum PassDebuggingString S1, enum PassDebuggingString S2, StringRef Msg)
virtual void initializePass()
virtual PassManagerType getPassManagerType() const
DenseMap< AnalysisID, Pass * > * InheritedAnalysis[PMT_Last]
Timer * getPassTimer(Pass *)
If TimingInfo is enabled then start pass timer.
void setDepth(unsigned newDepth)
void addPassManager(PMDataManager *Manager)
void schedulePass(Pass *P)
void freePass(Pass *P, StringRef Msg, enum PassDebuggingString)
Remove P.
bool isPassDebuggingExecutionsOrMore() const
virtual ~PMTopLevelManager()
Destructor.
virtual bool doFinalization(Module &)
void verifyPreservedAnalysis(Pass *P)
verifyPreservedAnalysis – Verify analysis presreved by pass P.
void initializeAnalysisInfo()
Initialize available analysis information.
virtual void addLowerLevelRequiredPass(Pass *P, Pass *RequiredPass)
void populateInheritedAnalysis(PMStack &PMS)
void initializeAnalysisImpl(Pass *P)
unsigned getDepth() const
PassManagerPrettyStackEntry(Pass *p, Module &m)
void add(Pass *P, bool ProcessAnalysis=true)
unsigned getNumContainedPasses() const
virtual Pass * getAsPass()=0
virtual const char * getPassName() const
virtual bool doInitialization(Module &)
void dumpPreservedSet(const Pass *P) const
void addIndirectPassManager(PMDataManager *Manager)
void collectLastUses(SmallVectorImpl< Pass * > &LastUses, Pass *P)
Collect passes whose last user is P.
SmallVectorImpl< ImmutablePass * > & getImmutablePasses()
PassManagerPrettyStackEntry(Pass *p)
void getAnalysisUsage(AnalysisUsage &Info) const
Pass Manager itself does not invalidate any analysis info.
void setLastUser(ArrayRef< Pass * > AnalysisPasses, Pass *P)
Set pass P as the last user of the given analysis passes.
void addImmutablePass(ImmutablePass *P)
Add immutable pass and initialize it.
void recordAvailableAnalysis(Pass *P)
Augment AvailableAnalysis by adding analysis made available by pass P.
void removeNotPreservedAnalysis(Pass *P)
Remove Analysis that is not preserved by the pass.
bool runOnFunction(Function &F)
void removeDeadPasses(Pass *P, StringRef Msg, enum PassDebuggingString)
Remove dead passes used by P.
virtual Pass * getOnTheFlyPass(Pass *P, AnalysisID PI, Function &F)
SmallVector< Pass *, 16 > PassVector
PMDataManager * top() const
DenseMap< AnalysisID, Pass * > * getAvailableAnalysis()
AnalysisUsage * findAnalysisUsage(Pass *P)
Find analysis usage information for the pass P.
void setTopLevelManager(PMTopLevelManager *T)
SmallVector< PMDataManager *, 8 > PassManagers
Collection of pass managers.
virtual void print(raw_ostream &OS) const
print - Emit information about this stack frame to OS.
FunctionPass * getContainedPass(unsigned N)
void cleanup()
cleanup - After running all passes, clean up pass manager cache.
void dumpPassStructure(unsigned Offset)
Print passes managed by this manager.
void dumpArguments() const
void push(PMDataManager *PM)
Pass * findAnalysisPass(AnalysisID AID)
void dumpPassArguments() const
LLVM Value Representation.
PMTopLevelManager * getTopLevelManager()
virtual PassManagerType getPassManagerType() const