1243789Sdim//===- MachinePostDominators.cpp -Machine Post Dominator Calculation ------===// 2243789Sdim// 3243789Sdim// The LLVM Compiler Infrastructure 4243789Sdim// 5243789Sdim// This file is distributed under the University of Illinois Open Source 6243789Sdim// License. See LICENSE.TXT for details. 7243789Sdim// 8243789Sdim//===----------------------------------------------------------------------===// 9243789Sdim// 10243789Sdim// This file implements simple dominator construction algorithms for finding 11243789Sdim// post dominators on machine functions. 12243789Sdim// 13243789Sdim//===----------------------------------------------------------------------===// 14243789Sdim 15243789Sdim#include "llvm/CodeGen/MachinePostDominators.h" 16243789Sdim 17243789Sdimusing namespace llvm; 18243789Sdim 19243789Sdimchar MachinePostDominatorTree::ID = 0; 20243789Sdim 21243789Sdim//declare initializeMachinePostDominatorTreePass 22243789SdimINITIALIZE_PASS(MachinePostDominatorTree, "machinepostdomtree", 23243789Sdim "MachinePostDominator Tree Construction", true, true) 24243789Sdim 25243789SdimMachinePostDominatorTree::MachinePostDominatorTree() : MachineFunctionPass(ID) { 26243789Sdim initializeMachinePostDominatorTreePass(*PassRegistry::getPassRegistry()); 27243789Sdim DT = new DominatorTreeBase<MachineBasicBlock>(true); //true indicate 28243789Sdim // postdominator 29243789Sdim} 30243789Sdim 31243789SdimFunctionPass * 32243789SdimMachinePostDominatorTree::createMachinePostDominatorTreePass() { 33243789Sdim return new MachinePostDominatorTree(); 34243789Sdim} 35243789Sdim 36243789Sdimbool 37243789SdimMachinePostDominatorTree::runOnMachineFunction(MachineFunction &F) { 38243789Sdim DT->recalculate(F); 39243789Sdim return false; 40243789Sdim} 41243789Sdim 42243789SdimMachinePostDominatorTree::~MachinePostDominatorTree() { 43243789Sdim delete DT; 44243789Sdim} 45243789Sdim 46243789Sdimvoid 47243789SdimMachinePostDominatorTree::getAnalysisUsage(AnalysisUsage &AU) const { 48243789Sdim AU.setPreservesAll(); 49243789Sdim MachineFunctionPass::getAnalysisUsage(AU); 50243789Sdim} 51243789Sdim 52243789Sdimvoid 53243789SdimMachinePostDominatorTree::print(llvm::raw_ostream &OS, const Module *M) const { 54243789Sdim DT->print(OS); 55243789Sdim} 56