1//===- PostDominators.cpp - Post-Dominator Calculation --------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file implements the post-dominator construction algorithms.
11//
12//===----------------------------------------------------------------------===//
13
14#define DEBUG_TYPE "postdomtree"
15
16#include "llvm/Analysis/PostDominators.h"
17#include "llvm/Instructions.h"
18#include "llvm/Support/CFG.h"
19#include "llvm/Support/Debug.h"
20#include "llvm/ADT/DepthFirstIterator.h"
21#include "llvm/ADT/SetOperations.h"
22#include "llvm/Assembly/Writer.h"
23#include "llvm/Analysis/DominatorInternals.h"
24using namespace llvm;
25
26//===----------------------------------------------------------------------===//
27//  PostDominatorTree Implementation
28//===----------------------------------------------------------------------===//
29
30char PostDominatorTree::ID = 0;
31INITIALIZE_PASS(PostDominatorTree, "postdomtree",
32                "Post-Dominator Tree Construction", true, true)
33
34bool PostDominatorTree::runOnFunction(Function &F) {
35  DT->recalculate(F);
36  return false;
37}
38
39PostDominatorTree::~PostDominatorTree() {
40  delete DT;
41}
42
43void PostDominatorTree::print(raw_ostream &OS, const Module *) const {
44  DT->print(OS);
45}
46
47
48FunctionPass* llvm::createPostDomTree() {
49  return new PostDominatorTree();
50}
51
52