diff options
Diffstat (limited to 'llvm/include')
| -rw-r--r-- | llvm/include/llvm/Pass.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/include/llvm/Pass.h b/llvm/include/llvm/Pass.h index 9951a988bf0..fcdc66fcbad 100644 --- a/llvm/include/llvm/Pass.h +++ b/llvm/include/llvm/Pass.h @@ -108,6 +108,8 @@ public: void dump() const; // dump - call print(std::cerr, 0); virtual void assignPassManager(PMStack &PMS) {} + virtual void setupPassManager(PMStack &PMS) {} + // Access AnalysisResolver inline void setResolver(AnalysisResolver *AR) { Resolver = AR; } inline AnalysisResolver *getResolver() { return Resolver; } @@ -201,6 +203,7 @@ public: virtual bool runPass(BasicBlock&) { return false; } virtual void assignPassManager(PMStack &PMS); + // Force out-of-line virtual method. virtual ~ModulePass(); }; @@ -267,6 +270,7 @@ public: bool run(Function &F); virtual void assignPassManager(PMStack &PMS); + virtual void setupPassManager(PMStack &PMS); }; @@ -321,6 +325,7 @@ public: virtual bool runPass(BasicBlock &BB); virtual void assignPassManager(PMStack &PMS); + virtual void setupPassManager(PMStack &PMS); }; /// Different types of internal pass managers. External pass managers @@ -337,8 +342,10 @@ enum PassManagerType { /// PMStack /// Top level pass manager (see PasManager.cpp) maintains active Pass Managers -/// using PMStack. Each Pass implements assignPassManager() to connect itself -/// with appropriate manager. assignPassManager() walks PMStack to find +/// using PMStack. Each Pass implements setupPassManager() and +/// assignPassManager() to connect itself with appropriate manager. +/// setupPassManager() creates new pass manager if required before adding +/// required analysis passes. assignPassManager() walks PMStack to find /// suitable manager. /// /// PMStack is just a wrapper around standard deque that overrides pop() and |

