///
bool run(Function &F);
-private:
+protected:
template<typename Trait> friend class PassManagerT;
friend class ModulePassManager;
friend class FunctionPassManagerT;
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);
};
PassManagerT<BBTraits>(BBPM->Parent) {
}
+ virtual bool runPass(Module &M) { return false; }
+
+ virtual bool runPass(BasicBlock &BB) { return BasicBlockPass::runPass(BB); }
+
// runPass - Specify how the pass should be run on the UnitType
virtual bool runPass(BBTraits::PassClass *P, BasicBlock *M) {
// TODO: init and finalize
AU.setPreservesAll();
}
+ virtual bool runPass(Module &M) { return FunctionPass::runPass(M); }
+ virtual bool runPass(BasicBlock &BB) { return FunctionPass::runPass(BB); }
+
// runPass - Specify how the pass should be run on the UnitType
virtual bool runPass(FTraits::PassClass *P, Function *F) {
return P->runOnFunction(*F);
// runOnModule - Implement the PassManager interface.
virtual bool runOnModule(Module &M);
-
+
+ virtual bool runPass(Module &M) { return ModulePass::runPass(M); }
+ virtual bool runPass(BasicBlock &BB) { return ModulePass::runPass(BB); }
+
// runPass - Specify how the pass should be run on the UnitType
virtual bool runPass(MTraits::PassClass *P, Module *M) {
return P->runOnModule(*M);