Line data Source code
1 : //===- MachinePostDominators.cpp -Machine Post 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 : // post dominators on machine functions.
12 : //
13 : //===----------------------------------------------------------------------===//
14 :
15 : #include "llvm/CodeGen/MachinePostDominators.h"
16 :
17 : using namespace llvm;
18 :
19 : namespace llvm {
20 : template class DominatorTreeBase<MachineBasicBlock, true>; // PostDomTreeBase
21 : }
22 :
23 : char MachinePostDominatorTree::ID = 0;
24 :
25 : //declare initializeMachinePostDominatorTreePass
26 245555 : INITIALIZE_PASS(MachinePostDominatorTree, "machinepostdomtree",
27 : "MachinePostDominator Tree Construction", true, true)
28 :
29 64784 : MachinePostDominatorTree::MachinePostDominatorTree() : MachineFunctionPass(ID) {
30 64784 : initializeMachinePostDominatorTreePass(*PassRegistry::getPassRegistry());
31 64784 : DT = new PostDomTreeBase<MachineBasicBlock>();
32 64784 : }
33 :
34 : FunctionPass *
35 0 : MachinePostDominatorTree::createMachinePostDominatorTreePass() {
36 0 : return new MachinePostDominatorTree();
37 : }
38 :
39 : bool
40 597330 : MachinePostDominatorTree::runOnMachineFunction(MachineFunction &F) {
41 597330 : DT->recalculate(F);
42 597330 : return false;
43 : }
44 :
45 123854 : MachinePostDominatorTree::~MachinePostDominatorTree() {
46 64378 : delete DT;
47 123854 : }
48 59476 :
49 : void
50 59476 : MachinePostDominatorTree::getAnalysisUsage(AnalysisUsage &AU) const {
51 64378 : AU.setPreservesAll();
52 64378 : MachineFunctionPass::getAnalysisUsage(AU);
53 64378 : }
54 :
55 : void
56 59882 : MachinePostDominatorTree::print(llvm::raw_ostream &OS, const Module *M) const {
57 : DT->print(OS);
58 59882 : }
|