1*9880d681SAndroid Build Coastguard Worker //===- MachineDominanceFrontier.cpp ---------------------------------------===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker #include "llvm/CodeGen/MachineDominanceFrontier.h" 11*9880d681SAndroid Build Coastguard Worker #include "llvm/Analysis/DominanceFrontierImpl.h" 12*9880d681SAndroid Build Coastguard Worker #include "llvm/CodeGen/MachineDominators.h" 13*9880d681SAndroid Build Coastguard Worker #include "llvm/CodeGen/Passes.h" 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker using namespace llvm; 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker namespace llvm { 19*9880d681SAndroid Build Coastguard Worker template class DominanceFrontierBase<MachineBasicBlock>; 20*9880d681SAndroid Build Coastguard Worker template class ForwardDominanceFrontierBase<MachineBasicBlock>; 21*9880d681SAndroid Build Coastguard Worker } 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker char MachineDominanceFrontier::ID = 0; 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker INITIALIZE_PASS_BEGIN(MachineDominanceFrontier, "machine-domfrontier", 27*9880d681SAndroid Build Coastguard Worker "Machine Dominance Frontier Construction", true, true) INITIALIZE_PASS_DEPENDENCY(MachineDominatorTree)28*9880d681SAndroid Build Coastguard WorkerINITIALIZE_PASS_DEPENDENCY(MachineDominatorTree) 29*9880d681SAndroid Build Coastguard Worker INITIALIZE_PASS_END(MachineDominanceFrontier, "machine-domfrontier", 30*9880d681SAndroid Build Coastguard Worker "Machine Dominance Frontier Construction", true, true) 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker MachineDominanceFrontier::MachineDominanceFrontier() 33*9880d681SAndroid Build Coastguard Worker : MachineFunctionPass(ID), 34*9880d681SAndroid Build Coastguard Worker Base() { 35*9880d681SAndroid Build Coastguard Worker initializeMachineDominanceFrontierPass(*PassRegistry::getPassRegistry()); 36*9880d681SAndroid Build Coastguard Worker } 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker char &llvm::MachineDominanceFrontierID = MachineDominanceFrontier::ID; 39*9880d681SAndroid Build Coastguard Worker runOnMachineFunction(MachineFunction &)40*9880d681SAndroid Build Coastguard Workerbool MachineDominanceFrontier::runOnMachineFunction(MachineFunction &) { 41*9880d681SAndroid Build Coastguard Worker releaseMemory(); 42*9880d681SAndroid Build Coastguard Worker Base.analyze(getAnalysis<MachineDominatorTree>().getBase()); 43*9880d681SAndroid Build Coastguard Worker return false; 44*9880d681SAndroid Build Coastguard Worker } 45*9880d681SAndroid Build Coastguard Worker releaseMemory()46*9880d681SAndroid Build Coastguard Workervoid MachineDominanceFrontier::releaseMemory() { 47*9880d681SAndroid Build Coastguard Worker Base.releaseMemory(); 48*9880d681SAndroid Build Coastguard Worker } 49*9880d681SAndroid Build Coastguard Worker getAnalysisUsage(AnalysisUsage & AU) const50*9880d681SAndroid Build Coastguard Workervoid MachineDominanceFrontier::getAnalysisUsage(AnalysisUsage &AU) const { 51*9880d681SAndroid Build Coastguard Worker AU.setPreservesAll(); 52*9880d681SAndroid Build Coastguard Worker AU.addRequired<MachineDominatorTree>(); 53*9880d681SAndroid Build Coastguard Worker MachineFunctionPass::getAnalysisUsage(AU); 54*9880d681SAndroid Build Coastguard Worker } 55