Move dominator info printer into tool/opt/GraphPrinters.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52907 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/opt/GraphPrinters.cpp b/tools/opt/GraphPrinters.cpp
index 867e334..7f1199a 100644
--- a/tools/opt/GraphPrinters.cpp
+++ b/tools/opt/GraphPrinters.cpp
@@ -18,6 +18,7 @@
 #include "llvm/Pass.h"
 #include "llvm/Value.h"
 #include "llvm/Analysis/CallGraph.h"
+#include "llvm/Analysis/Dominators.h"
 #include <iostream>
 #include <fstream>
 using namespace llvm;
@@ -81,3 +82,34 @@
   RegisterPass<CallGraphPrinter> P2("print-callgraph",
                                     "Print Call Graph to 'dot' file");
 }
+
+//===----------------------------------------------------------------------===//
+//                            DomInfoPrinter Pass
+//===----------------------------------------------------------------------===//
+
+namespace {
+  class 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);
+}