//===- MachineDominanceFrontier.cpp ---------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "llvm/CodeGen/MachineDominanceFrontier.h" #include "llvm/Analysis/DominanceFrontierImpl.h" #include "llvm/CodeGen/MachineDominators.h" #include "llvm/CodeGen/Passes.h" using namespace llvm; namespace llvm { template class DominanceFrontierBase<MachineBasicBlock>; template class ForwardDominanceFrontierBase<MachineBasicBlock>; } char MachineDominanceFrontier::ID = 0; INITIALIZE_PASS_BEGIN(MachineDominanceFrontier, "machine-domfrontier", "Machine Dominance Frontier Construction", true, true) INITIALIZE_PASS_DEPENDENCY(MachineDominatorTree) INITIALIZE_PASS_END(MachineDominanceFrontier, "machine-domfrontier", "Machine Dominance Frontier Construction", true, true) MachineDominanceFrontier::MachineDominanceFrontier() : MachineFunctionPass(ID), Base() { initializeMachineDominanceFrontierPass(*PassRegistry::getPassRegistry()); } char &llvm::MachineDominanceFrontierID = MachineDominanceFrontier::ID; bool MachineDominanceFrontier::runOnMachineFunction(MachineFunction &) { releaseMemory(); Base.analyze(getAnalysis<MachineDominatorTree>().getBase()); return false; } void MachineDominanceFrontier::releaseMemory() { Base.releaseMemory(); } void MachineDominanceFrontier::getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); AU.addRequired<MachineDominatorTree>(); MachineFunctionPass::getAnalysisUsage(AU); }