MachineDominators.cpp revision 198090
1193323Sed//===- MachineDominators.cpp - Machine Dominator Calculation --------------===//
2193323Sed//
3193323Sed//                     The LLVM Compiler Infrastructure
4193323Sed//
5193323Sed// This file is distributed under the University of Illinois Open Source
6193323Sed// License. See LICENSE.TXT for details.
7193323Sed//
8193323Sed//===----------------------------------------------------------------------===//
9193323Sed//
10193323Sed// This file implements simple dominator construction algorithms for finding
11193323Sed// forward dominators on machine functions.
12193323Sed//
13193323Sed//===----------------------------------------------------------------------===//
14193323Sed
15193323Sed#include "llvm/CodeGen/MachineDominators.h"
16193323Sed#include "llvm/CodeGen/Passes.h"
17193323Sed
18193323Sedusing namespace llvm;
19193323Sed
20193323SedTEMPLATE_INSTANTIATION(class DomTreeNodeBase<MachineBasicBlock>);
21193323SedTEMPLATE_INSTANTIATION(class DominatorTreeBase<MachineBasicBlock>);
22193323Sed
23193323Sedchar MachineDominatorTree::ID = 0;
24193323Sed
25193323Sedstatic RegisterPass<MachineDominatorTree>
26193323SedE("machinedomtree", "MachineDominator Tree Construction", true);
27193323Sed
28193323Sedconst PassInfo *const llvm::MachineDominatorsID = &E;
29193323Sed
30193323Sedvoid MachineDominatorTree::getAnalysisUsage(AnalysisUsage &AU) const {
31193323Sed  AU.setPreservesAll();
32193323Sed  MachineFunctionPass::getAnalysisUsage(AU);
33193323Sed}
34193323Sed
35193323Sedbool MachineDominatorTree::runOnMachineFunction(MachineFunction &F) {
36193323Sed  DT->recalculate(F);
37193323Sed
38193323Sed  return false;
39193323Sed}
40193323Sed
41193323SedMachineDominatorTree::MachineDominatorTree()
42193323Sed    : MachineFunctionPass(&ID) {
43193323Sed  DT = new DominatorTreeBase<MachineBasicBlock>(false);
44193323Sed}
45193323Sed
46193323SedMachineDominatorTree::~MachineDominatorTree() {
47193323Sed  DT->releaseMemory();
48193323Sed  delete DT;
49193323Sed}
50193323Sed
51193323Sedvoid MachineDominatorTree::releaseMemory() {
52193323Sed  DT->releaseMemory();
53193323Sed}
54198090Srdivacky
55198090Srdivackyvoid MachineDominatorTree::print(raw_ostream &OS, const Module*) const {
56198090Srdivacky  DT->print(OS);
57198090Srdivacky}
58