- // 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);
-
-#ifdef USE_OLD_PASSMANAGER
-private:
- template<typename Trait> friend class PassManagerT;
- friend class FunctionPassManagerT;
- friend class BasicBlockPassManager;
- virtual void addToPassManager(ModulePassManager *PM, AnalysisUsage &AU) {
- FunctionPass::addToPassManager(PM, AU);
- }
- virtual void addToPassManager(FunctionPassManagerT *PM, AnalysisUsage &AU);
- virtual void addToPassManager(BasicBlockPassManager *PM,AnalysisUsage &AU);
-#endif
+ /// Return what kind of Pass Manager can manage this pass.
+ virtual PassManagerType getPotentialPassManagerType() const;