Use a module analysis
authorChris Lattner <sabre@nondot.org>
Mon, 29 Jul 2002 23:02:25 +0000 (23:02 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 29 Jul 2002 23:02:25 +0000 (23:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3133 91177308-0d34-0410-b5e6-96231b3b80d8

tools/analyze/analyze.cpp

index cc3a4780824a311546ddf4fd4695614ad73bf917..79bcc4c5bdcf5f53dc136261d61112c2915bcea8 100644 (file)
 
 
 struct ModulePassPrinter : public Pass {
-  Pass *PassToPrint;
-  ModulePassPrinter(Pass *PI) : PassToPrint(PI) {}
+  const PassInfo *PassToPrint;
+  ModulePassPrinter(const PassInfo *PI) : PassToPrint(PI) {}
 
   virtual bool run(Module &M) {
     std::cout << "Printing Analysis info for Pass "
               << PassToPrint->getPassName() << ":\n";
-    PassToPrint->print(std::cout, &M);
+    getAnalysis<Pass>(PassToPrint).print(std::cout, &M);
     
     // Get and print pass...
     return false;
   }
+
+  virtual void getAnalysisUsage(AnalysisUsage &AU) const {
+    AU.addRequired(PassToPrint);
+    AU.setPreservesAll();
+  }
 };
 
 struct FunctionPassPrinter : public FunctionPass {
@@ -122,7 +127,7 @@ int main(int argc, char **argv) {
       else if (FunctionPass *FP = dynamic_cast<FunctionPass*>(P))
         Passes.add(new FunctionPassPrinter(Analysis));
       else
-        Passes.add(new ModulePassPrinter(P));
+        Passes.add(new ModulePassPrinter(Analysis));
 
     } else
       cerr << "Cannot create pass: " << Analysis->getPassName() << "\n";