Move copyKillDeadInfo out-of-line. Add findRegisterUseOperand().
[oota-llvm.git] / include / llvm / Pass.h
index 90e614d63234e24751916d410f1eef663e53e93b..30f1df9669237a2c5d2bd0a20a40ed509de97fe8 100644 (file)
@@ -29,6 +29,7 @@
 #ifndef LLVM_PASS_H
 #define LLVM_PASS_H
 
+#include "llvm/Support/Streams.h"
 #include <vector>
 #include <map>
 #include <iosfwd>
@@ -100,6 +101,9 @@ public:
   /// provide the Module* in case the analysis doesn't need it it can just be
   /// ignored.
   ///
+  void print(llvm_ostream &O, const Module *M) const {
+    if (O.stream()) print(*O.stream(), M);
+  }
   virtual void print(std::ostream &O, const Module *M) const;
   void dump() const; // dump - call print(std::cerr, 0);
 
@@ -290,7 +294,7 @@ public:
   ///
   bool run(Function &F);
 
-private:
+protected:
   template<typename Trait> friend class PassManagerT;
   friend class ModulePassManager;
   friend class FunctionPassManagerT;
@@ -311,7 +315,8 @@ private:
 ///      other basic block in the function.
 ///   3. Optimizations conform to all of the constraints of FunctionPasses.
 ///
-struct BasicBlockPass : public FunctionPass {
+class BasicBlockPass : public FunctionPass {
+public:
   /// doInitialization - Virtual method overridden by subclasses to do
   /// any necessary per-module initialization.
   ///
@@ -353,6 +358,9 @@ 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);
 };