Revert r64616 which worked around http://gcc.gnu.org/PR42757 , we just didn't
[llvm.git] / lib / CodeGen / MachineDominators.cpp
blob408873903b0d96b17ca7495a844a3fda47c424c3
1 //===- MachineDominators.cpp - Machine Dominator Calculation --------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements simple dominator construction algorithms for finding
11 // forward dominators on machine functions.
13 //===----------------------------------------------------------------------===//
15 #include "llvm/CodeGen/MachineDominators.h"
16 #include "llvm/CodeGen/Passes.h"
18 using namespace llvm;
20 namespace llvm {
21 TEMPLATE_INSTANTIATION(class DomTreeNodeBase<MachineBasicBlock>);
22 TEMPLATE_INSTANTIATION(class DominatorTreeBase<MachineBasicBlock>);
25 char MachineDominatorTree::ID = 0;
27 static RegisterPass<MachineDominatorTree>
28 E("machinedomtree", "MachineDominator Tree Construction", true);
30 const PassInfo *const llvm::MachineDominatorsID = &E;
32 void MachineDominatorTree::getAnalysisUsage(AnalysisUsage &AU) const {
33 AU.setPreservesAll();
34 MachineFunctionPass::getAnalysisUsage(AU);
37 bool MachineDominatorTree::runOnMachineFunction(MachineFunction &F) {
38 DT->recalculate(F);
40 return false;
43 MachineDominatorTree::MachineDominatorTree()
44 : MachineFunctionPass(&ID) {
45 DT = new DominatorTreeBase<MachineBasicBlock>(false);
48 MachineDominatorTree::~MachineDominatorTree() {
49 DT->releaseMemory();
50 delete DT;
53 void MachineDominatorTree::releaseMemory() {
54 DT->releaseMemory();
57 void MachineDominatorTree::print(raw_ostream &OS, const Module*) const {
58 DT->print(OS);