- virtual bool doFinalization(Module &M) { return false; }
-
-
- // To run this pass on a function, we simply call runOnBasicBlock once for
- // each function.
- //
- bool runOnFunction(Function &F);
-
- /// To run directly on the basic block, we initialize, runOnBasicBlock, then
- /// finalize.
- ///
- virtual bool runPass(Module &M) { return false; }
- virtual bool runPass(BasicBlock &BB);
-
- virtual void assignPassManager(PMStack &PMS);
-};
-
-/// 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
-/// suitable manager.
-///
-/// PMStack is just a wrapper around standard deque that overrides pop() and
-/// push() methods.
-class PMDataManager;
-class PMStack {
-public:
- typedef std::deque<PMDataManager *>::reverse_iterator iterator;
- iterator begin() { return S.rbegin(); }
- iterator end() { return S.rend(); }