aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/VMCore/Dominators.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/VMCore/Dominators.cpp b/lib/VMCore/Dominators.cpp
index e9eca4eee4..452b59d218 100644
--- a/lib/VMCore/Dominators.cpp
+++ b/lib/VMCore/Dominators.cpp
@@ -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);