summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2008-06-27 16:43:21 +0000
committerDevang Patel <dpatel@apple.com>2008-06-27 16:43:21 +0000
commit42af887105c37fb1dba3e197d70d16a34a0bc06f (patch)
tree501dfe5eb07a55412c32fdca605766679e6bb4d7
parentb2931f29f3bb345eefe7d63bde1f230d235bca2e (diff)
downloadllvm-42af887105c37fb1dba3e197d70d16a34a0bc06f.tar.gz
llvm-42af887105c37fb1dba3e197d70d16a34a0bc06f.tar.bz2
llvm-42af887105c37fb1dba3e197d70d16a34a0bc06f.tar.xz
Add dominator info printer pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52829 91177308-0d34-0410-b5e6-96231b3b80d8
-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);