MachineDominators.cpp revision 267654
146283Sdfr//===- MachineDominators.cpp - Machine Dominator Calculation --------------===//
246283Sdfr//
398944Sobrien//                     The LLVM Compiler Infrastructure
498944Sobrien//
546283Sdfr// This file is distributed under the University of Illinois Open Source
698944Sobrien// License. See LICENSE.TXT for details.
746283Sdfr//
898944Sobrien//===----------------------------------------------------------------------===//
998944Sobrien//
1098944Sobrien// This file implements simple dominator construction algorithms for finding
1198944Sobrien// forward dominators on machine functions.
1246283Sdfr//
1398944Sobrien//===----------------------------------------------------------------------===//
1498944Sobrien
1598944Sobrien#include "llvm/CodeGen/MachineDominators.h"
1698944Sobrien#include "llvm/CodeGen/Passes.h"
1746283Sdfr
1898944Sobrienusing namespace llvm;
1998944Sobrien
2098944Sobriennamespace llvm {
2198944SobrienTEMPLATE_INSTANTIATION(class DomTreeNodeBase<MachineBasicBlock>);
2298944SobrienTEMPLATE_INSTANTIATION(class DominatorTreeBase<MachineBasicBlock>);
2346283Sdfr}
2446283Sdfr
2546283Sdfrchar MachineDominatorTree::ID = 0;
2646283Sdfr
2746283SdfrINITIALIZE_PASS(MachineDominatorTree, "machinedomtree",
2846283Sdfr                "MachineDominator Tree Construction", true, true)
2946283Sdfr
3046283Sdfrchar &llvm::MachineDominatorsID = MachineDominatorTree::ID;
3146283Sdfr
3246283Sdfrvoid MachineDominatorTree::getAnalysisUsage(AnalysisUsage &AU) const {
3346283Sdfr  AU.setPreservesAll();
3446283Sdfr  MachineFunctionPass::getAnalysisUsage(AU);
3546283Sdfr}
3646283Sdfr
3746283Sdfrbool MachineDominatorTree::runOnMachineFunction(MachineFunction &F) {
3846283Sdfr  DT->recalculate(F);
3998944Sobrien
4046283Sdfr  return false;
4146283Sdfr}
4246283Sdfr
4398944SobrienMachineDominatorTree::MachineDominatorTree()
4446283Sdfr    : MachineFunctionPass(ID) {
4598944Sobrien  initializeMachineDominatorTreePass(*PassRegistry::getPassRegistry());
4646283Sdfr  DT = new DominatorTreeBase<MachineBasicBlock>(false);
4798944Sobrien}
4846283Sdfr
4998944SobrienMachineDominatorTree::~MachineDominatorTree() {
5046283Sdfr  delete DT;
5198944Sobrien}
5246283Sdfr
5398944Sobrienvoid MachineDominatorTree::releaseMemory() {
5446283Sdfr  DT->releaseMemory();
5598944Sobrien}
5646283Sdfr
5798944Sobrienvoid MachineDominatorTree::print(raw_ostream &OS, const Module*) const {
5846283Sdfr  DT->print(OS);
5998944Sobrien}
6046283Sdfr