1 //===- MachineDominators.cpp - Machine Dominator Calculation --------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file implements simple dominator construction algorithms for finding
11 // forward dominators on machine functions.
13 //===----------------------------------------------------------------------===//
15 #include "llvm/CodeGen/MachineDominators.h"
16 #include "llvm/CodeGen/Passes.h"
20 TEMPLATE_INSTANTIATION(class DomTreeNodeBase
<MachineBasicBlock
>);
21 TEMPLATE_INSTANTIATION(class DominatorTreeBase
<MachineBasicBlock
>);
23 char MachineDominatorTree::ID
= 0;
25 static RegisterPass
<MachineDominatorTree
>
26 E("machinedomtree", "MachineDominator Tree Construction", true);
28 const PassInfo
*const llvm::MachineDominatorsID
= &E
;
30 void MachineDominatorTree::getAnalysisUsage(AnalysisUsage
&AU
) const {
32 MachineFunctionPass::getAnalysisUsage(AU
);
35 bool MachineDominatorTree::runOnMachineFunction(MachineFunction
&F
) {
41 MachineDominatorTree::MachineDominatorTree()
42 : MachineFunctionPass(&ID
) {
43 DT
= new DominatorTreeBase
<MachineBasicBlock
>(false);
46 MachineDominatorTree::~MachineDominatorTree() {
51 void MachineDominatorTree::releaseMemory() {
55 void MachineDominatorTree::print(raw_ostream
&OS
, const Module
*) const {