| //===- PostDominators.cpp - Post-Dominator Calculation --------------------===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file implements the post-dominator construction algorithms. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #define DEBUG_TYPE "postdomtree" |
| |
| #include "llvm/Analysis/PostDominators.h" |
| #include "llvm/Instructions.h" |
| #include "llvm/Support/CFG.h" |
| #include "llvm/Support/Debug.h" |
| #include "llvm/ADT/DepthFirstIterator.h" |
| #include "llvm/ADT/SetOperations.h" |
| #include "llvm/Assembly/Writer.h" |
| #include "llvm/Analysis/DominatorInternals.h" |
| using namespace llvm; |
| |
| //===----------------------------------------------------------------------===// |
| // PostDominatorTree Implementation |
| //===----------------------------------------------------------------------===// |
| |
| char PostDominatorTree::ID = 0; |
| INITIALIZE_PASS(PostDominatorTree, "postdomtree", |
| "Post-Dominator Tree Construction", true, true) |
| |
| bool PostDominatorTree::runOnFunction(Function &F) { |
| DT->recalculate(F); |
| return false; |
| } |
| |
| PostDominatorTree::~PostDominatorTree() { |
| delete DT; |
| } |
| |
| void PostDominatorTree::print(raw_ostream &OS, const Module *) const { |
| DT->print(OS); |
| } |
| |
| |
| FunctionPass* llvm::createPostDomTree() { |
| return new PostDominatorTree(); |
| } |
| |