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