For PR387:\
authorReid Spencer <rspencer@reidspencer.com>
Tue, 7 Dec 2004 08:11:11 +0000 (08:11 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Tue, 7 Dec 2004 08:11:11 +0000 (08:11 +0000)
Add runPass methods to remove -Woverloaded-virtual warnings are not \
present and circumvent possible inheritance bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18600 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Pass.h

index 0855986fbb6aca1c4a9621faceb4dd12ab0960a7..e6083a3ca88b0f6f0014617124cda4c17e11c881 100644 (file)
@@ -87,7 +87,8 @@ public:
   /// 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) = 0;
+  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
@@ -216,7 +217,8 @@ public:
   /// being operated on.
   virtual bool runOnModule(Module &M) = 0;
 
-  bool runPass(Module &M) { return runOnModule(M); }
+  virtual bool runPass(Module &M) { return runOnModule(M); }
+  virtual bool runPass(BasicBlock&) { return false; }
 
   virtual void addToPassManager(PassManagerT<Module> *PM, AnalysisUsage &AU);
 };
@@ -338,7 +340,8 @@ struct BasicBlockPass : public FunctionPass {
   /// To run directly on the basic block, we initialize, runOnBasicBlock, then
   /// finalize.
   ///
-  bool runPass(BasicBlock &BB);
+  virtual bool runPass(Module &M) { return false; }
+  virtual bool runPass(BasicBlock &BB);
 
 private:
   friend class PassManagerT<Function>;