diff --git a/include/llvm/PassManagers.h b/include/llvm/PassManagers.h index e918091b4a0..17f4a0592fb 100644 --- a/include/llvm/PassManagers.h +++ b/include/llvm/PassManagers.h @@ -163,21 +163,26 @@ private: /// PMTopLevelManager manages LastUser info and collects common APIs used by /// top level pass managers. class PMTopLevelManager { -public: +protected: + explicit PMTopLevelManager(PMDataManager *PMDM); virtual unsigned getNumContainedManagers() const { return (unsigned)PassManagers.size(); } + void initializeAllAnalysisInfo(); + +private: + /// This is implemented by top level pass manager and used by + /// schedulePass() to add analysis info passes that are not available. + virtual void addTopLevelPass(Pass *P) = 0; + +public: /// Schedule pass P for execution. Make sure that passes required by /// P are run before P is run. Update analysis info maintained by /// the manager. Remove dead passes. This is a recursive function. void schedulePass(Pass *P); - /// This is implemented by top level pass manager and used by - /// schedulePass() to add analysis info passes that are not available. - virtual void addTopLevelPass(Pass *P) = 0; - /// Set pass P as the last user of the given analysis passes. void setLastUser(SmallVector &AnalysisPasses, Pass *P); @@ -192,7 +197,6 @@ public: /// Find analysis usage information for the pass P. AnalysisUsage *findAnalysisUsage(Pass *P); - explicit PMTopLevelManager(PMDataManager *PMDM); virtual ~PMTopLevelManager(); /// Add immutable pass and initialize it. @@ -219,8 +223,6 @@ public: void dumpPasses() const; void dumpArguments() const; - void initializeAllAnalysisInfo(); - // Active Pass Managers PMStack activeStack;