[llvm-commits] [llvm] r37909 - in /llvm/trunk: test/Other/2007-06-28-PassManager.ll tools/opt/opt.cpp

Devang Patel dpatel at apple.com
Thu Jul 5 08:32:03 PDT 2007


Author: dpatel
Date: Thu Jul  5 10:32:03 2007
New Revision: 37909

URL: http://llvm.org/viewvc/llvm-project?rev=37909&view=rev
Log:
Fix PR1539.  Add LoopPassPrinter.


Modified:
    llvm/trunk/test/Other/2007-06-28-PassManager.ll
    llvm/trunk/tools/opt/opt.cpp

Modified: llvm/trunk/test/Other/2007-06-28-PassManager.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Other/2007-06-28-PassManager.ll?rev=37909&r1=37908&r2=37909&view=diff

==============================================================================
--- llvm/trunk/test/Other/2007-06-28-PassManager.ll (original)
+++ llvm/trunk/test/Other/2007-06-28-PassManager.ll Thu Jul  5 10:32:03 2007
@@ -1,5 +1,7 @@
 ; RUN:  llvm-as < %s |  opt -analyze -inline -disable-output
 ; PR 1526
+; RUN:  llvm-as < %s |  opt -analyze -indvars -disable-output
+; PR 1539
 define i32 @test1() {
        ret i32 0;
 }

Modified: llvm/trunk/tools/opt/opt.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/opt/opt.cpp?rev=37909&r1=37908&r2=37909&view=diff

==============================================================================
--- llvm/trunk/tools/opt/opt.cpp (original)
+++ llvm/trunk/tools/opt/opt.cpp Thu Jul  5 10:32:03 2007
@@ -176,6 +176,33 @@
 };
 
 char FunctionPassPrinter::ID = 0;
+
+struct LoopPassPrinter : public LoopPass {
+  static char ID;
+  const PassInfo *PassToPrint;
+  LoopPassPrinter(const PassInfo *PI) : 
+    LoopPass((intptr_t)&ID), PassToPrint(PI) {}
+
+  virtual bool runOnLoop(Loop *L, LPPassManager &LPM) {
+    if (!Quiet) {
+      cout << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
+      getAnalysisID<Pass>(PassToPrint).print(cout, 
+                                  L->getHeader()->getParent()->getParent());
+    }
+    // Get and print pass...
+    return false;
+  }
+  
+  virtual const char *getPassName() const { return "'Pass' Printer"; }
+
+  virtual void getAnalysisUsage(AnalysisUsage &AU) const {
+    AU.addRequiredID(PassToPrint);
+    AU.setPreservesAll();
+  }
+};
+
+char LoopPassPrinter::ID = 0;
+
 struct BasicBlockPassPrinter : public BasicBlockPass {
   const PassInfo *PassToPrint;
   static char ID;
@@ -372,6 +399,8 @@
         if (AnalyzeOnly) {
           if (dynamic_cast<BasicBlockPass*>(P))
             Passes.add(new BasicBlockPassPrinter(PassInf));
+          else if (dynamic_cast<LoopPass*>(P))
+            Passes.add(new  LoopPassPrinter(PassInf));
           else if (dynamic_cast<FunctionPass*>(P))
             Passes.add(new FunctionPassPrinter(PassInf));
           else if (dynamic_cast<CallGraphSCCPass*>(P))





More information about the llvm-commits mailing list