Add dominator info printer pass.
authorDevang Patel <dpatel@apple.com>
Fri, 27 Jun 2008 16:43:21 +0000 (16:43 +0000)
committerDevang Patel <dpatel@apple.com>
Fri, 27 Jun 2008 16:43:21 +0000 (16:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52829 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Dominators.cpp

index e9eca4eee4a212fea914099840399273590414ad..452b59d2181b1ba05e8fb4e68976da29c8eea8ce 100644 (file)
@@ -286,3 +286,34 @@ void DominanceFrontierBase::print(std::ostream &o, const Module* ) const {
 void DominanceFrontierBase::dump() {
   print (llvm::cerr);
 }
+
+//===----------------------------------------------------------------------===//
+//                            DomInfoPrinter Pass
+//===----------------------------------------------------------------------===//
+
+namespace {
+  class VISIBILITY_HIDDEN DomInfoPrinter : public FunctionPass {
+  public:
+    static char ID; // Pass identification, replacement for typeid
+    DomInfoPrinter() : FunctionPass((intptr_t)&ID) {}
+
+    virtual void getAnalysisUsage(AnalysisUsage &AU) const {
+      AU.setPreservesAll();
+      AU.addRequired<DominatorTree>();
+      AU.addRequired<DominanceFrontier>();
+
+    }
+
+    virtual bool runOnFunction(Function &F) {
+      DominatorTree &DT = getAnalysis<DominatorTree>();
+      DT.dump();
+      DominanceFrontier &DF = getAnalysis<DominanceFrontier>();
+      DF.dump();
+      return false;
+    }
+  };
+}
+
+char DomInfoPrinter::ID = 0;
+static RegisterPass<DomInfoPrinter>
+DIP("print-dom-info", "Dominator Info Printer", true, true);