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"
21 TEMPLATE_INSTANTIATION(class DomTreeNodeBase<MachineBasicBlock>);
22 TEMPLATE_INSTANTIATION(class DominatorTreeBase<MachineBasicBlock>);
25 char MachineDominatorTree::ID = 0;
27 INITIALIZE_PASS(MachineDominatorTree, "machinedomtree",
28 "MachineDominator Tree Construction", true, true)
30 char &llvm::MachineDominatorsID = MachineDominatorTree::ID;
32 void MachineDominatorTree::getAnalysisUsage(AnalysisUsage &AU) const {
34 MachineFunctionPass::getAnalysisUsage(AU);
37 bool MachineDominatorTree::runOnMachineFunction(MachineFunction &F) {
38 CriticalEdgesToSplit.clear();
45 MachineDominatorTree::MachineDominatorTree()
46 : MachineFunctionPass(ID) {
47 initializeMachineDominatorTreePass(*PassRegistry::getPassRegistry());
48 DT = new DominatorTreeBase<MachineBasicBlock>(false);
51 MachineDominatorTree::~MachineDominatorTree() {
55 void MachineDominatorTree::releaseMemory() {
59 void MachineDominatorTree::print(raw_ostream &OS, const Module*) const {