///
const PassInfo *getPassInfo() const;
- /// runPass - Run this pass, returning true if a modification was made to the
- /// module argument. This should be implemented by all concrete subclasses.
- ///
- virtual bool runPass(Module &M) { return false; }
- virtual bool runPass(BasicBlock&) { return false; }
-
/// print - Print out the internal state of the pass. This is called by
/// Analyze to print out the contents of an analysis. Otherwise it is not
/// necessary to implement this method. Beware that the module pointer MAY be
/// being operated on.
virtual bool runOnModule(Module &M) = 0;
- virtual bool runPass(Module &M) { return runOnModule(M); }
- virtual bool runPass(BasicBlock&) { return false; }
-
virtual void assignPassManager(PMStack &PMS,
PassManagerType T = PMT_ModulePassManager);
//
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,
PassManagerType T = PMT_BasicBlockPassManager);
return Changed | doFinalization(F);
}
-// To run directly on the basic block, we initialize, runOnBasicBlock, then
-// finalize.
-//
-bool BasicBlockPass::runPass(BasicBlock &BB) {
- Function &F = *BB.getParent();
- Module &M = *F.getParent();
- bool Changed = doInitialization(M);
- Changed |= doInitialization(F);
- Changed |= runOnBasicBlock(BB);
- Changed |= doFinalization(F);
- Changed |= doFinalization(M);
- return Changed;
-}
-
//===----------------------------------------------------------------------===//
// Pass Registration mechanism
//