LLVM  4.0.0
MachineDominanceFrontier.h
Go to the documentation of this file.
1 //===- llvm/CodeGen/MachineDominanceFrontier.h ------------------*- C++ -*-===//
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 #ifndef LLVM_CODEGEN_MACHINEDOMINANCEFRONTIER_H
11 #define LLVM_CODEGEN_MACHINEDOMINANCEFRONTIER_H
12 
16 
17 
18 namespace llvm {
19 
22 public:
28 
29  void operator=(const MachineDominanceFrontier &) = delete;
31 
32  static char ID;
33 
35 
37  return Base;
38  }
39 
40  inline const std::vector<MachineBasicBlock*> &getRoots() const {
41  return Base.getRoots();
42  }
43 
45  return Base.getRoot();
46  }
47 
48  bool isPostDominator() const {
49  return Base.isPostDominator();
50  }
51 
53  return Base.begin();
54  }
55 
57  return Base.begin();
58  }
59 
61  return Base.end();
62  }
63 
64  const_iterator end() const {
65  return Base.end();
66  }
67 
69  return Base.find(B);
70  }
71 
73  return Base.find(B);
74  }
75 
77  return Base.addBasicBlock(BB, frontier);
78  }
79 
81  return Base.removeBlock(BB);
82  }
83 
85  return Base.addToFrontier(I, Node);
86  }
87 
89  return Base.removeFromFrontier(I, Node);
90  }
91 
92  bool compareDomSet(DomSetType &DS1, const DomSetType &DS2) const {
93  return Base.compareDomSet(DS1, DS2);
94  }
95 
97  return Base.compare(Other);
98  }
99 
100  bool runOnMachineFunction(MachineFunction &F) override;
101 
102  void releaseMemory() override;
103 
104  void getAnalysisUsage(AnalysisUsage &AU) const override;
105 };
106 
107 }
108 
109 #endif
const_iterator find(MachineBasicBlock *B) const
MachineBasicBlock * getRoot() const
std::set< BlockT * > DomSetType
DominanceFrontierBase - Common base class for computing forward and inverse dominance frontiers for a...
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
DominanceFrontierBase< MachineBasicBlock >::DomSetType DomSetType
const std::vector< MachineBasicBlock * > & getRoots() const
#define F(x, y, z)
Definition: MD5.cpp:51
Base class for the actual dominator tree node.
static GCRegistry::Add< OcamlGC > B("ocaml","ocaml 3.10-compatible GC")
Core dominator tree base class.
Definition: LoopInfo.h:59
Represent the analysis usage information of a pass.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
bool compare(DominanceFrontierBase< MachineBasicBlock > &Other) const
DomTreeNodeBase< MachineBasicBlock > DomTreeNodeT
iterator find(MachineBasicBlock *B)
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
bool compareDomSet(DomSetType &DS1, const DomSetType &DS2) const
DominanceFrontierBase< MachineBasicBlock > & getBase()
DomSetMapType::iterator iterator
bool runOnMachineFunction(MachineFunction &F) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
#define I(x, y, z)
Definition: MD5.cpp:54
void removeFromFrontier(iterator I, MachineBasicBlock *Node)
void removeBlock(MachineBasicBlock *BB)
DominanceFrontierBase< MachineBasicBlock >::iterator iterator
DomSetMapType::const_iterator const_iterator
DominatorTreeBase< MachineBasicBlock > DomTreeT
DominanceFrontierBase< MachineBasicBlock >::const_iterator const_iterator
void addToFrontier(iterator I, MachineBasicBlock *Node)
iterator addBasicBlock(MachineBasicBlock *BB, const DomSetType &frontier)
DominanceFrontier Class - Concrete subclass of DominanceFrontierBase that is used to compute a forwar...
void operator=(const MachineDominanceFrontier &)=delete