LLVM: include/llvm/CodeGen/MachineRegionInfo.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_CODEGEN_MACHINEREGIONINFO_H
10#define LLVM_CODEGEN_MACHINEREGIONINFO_H
11
21#include
22
23namespace llvm {
24
29
48
60
72
73class MachineRegionInfo : public RegionInfoBase<RegionTraits> {
74public:
77
78
80
83};
84
87
88public:
90
93
95
97
98
99
105 void dump() const;
106
107};
108
109template <>
110template <>
113 const {
114 assert(() && "This is not a MachineBasicBlock RegionNode!");
116}
117
118template <>
119template <>
122 const {
124 auto Unconst =
126 return reinterpret_cast<MachineRegion *>(Unconst);
127}
128
132
135
136template <>
155
156template <>
174
175extern template class RegionBase<RegionTraits>;
176extern template class RegionNodeBase<RegionTraits>;
177extern template class RegionInfoBase<RegionTraits>;
178
179}
180
181#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file builds on the ADT/GraphTraits.h file to build generic depth first graph iterator.
#define RegionNodeGraphTraits(NodeT, BlockT, RegionT)
#define RegionGraphTraits(RegionT, NodeT)
Represent the analysis usage information of a pass.
unsigned succ_size() const
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...
MachineFunctionPass(char &ID)
Representation of each machine instruction.
MachinePostDominatorTree - an analysis pass wrapper for DominatorTree used to compute the post-domina...
Definition MachineRegionInfo.h:85
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
static char ID
Definition MachineRegionInfo.h:89
bool runOnMachineFunction(MachineFunction &F) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
MachineRegionInfo & getRegionInfo()
Definition MachineRegionInfo.h:94
~MachineRegionInfoPass() override
const MachineRegionInfo & getRegionInfo() const
Definition MachineRegionInfo.h:96
void verifyAnalysis() const override
verifyAnalysis() - This member can be implemented by a analysis pass to check state of analysis infor...
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
void print(raw_ostream &OS, const Module *) const override
print - Print out the internal state of the pass.
Definition MachineRegionInfo.h:73
~MachineRegionInfo() override
void recalculate(MachineFunction &F, MachineDominatorTree *DT, MachinePostDominatorTree *PDT, MachineDominanceFrontier *DF)
void updateStatistics(MachineRegion *R) final
Definition MachineRegionInfo.h:49
bool operator==(const MachineRegion &RN) const
Definition MachineRegionInfo.h:56
MachineRegionNode(MachineRegion *Parent, MachineBasicBlock *Entry, bool isSubRegion=false)
Definition MachineRegionInfo.h:51
Definition MachineRegionInfo.h:61
MachineRegion(MachineBasicBlock *Entry, MachineBasicBlock *Exit, MachineRegionInfo *RI, MachineDominatorTree *DT, MachineRegion *Parent=nullptr)
bool operator==(const MachineRegionNode &RN) const
Definition MachineRegionInfo.h:68
A Module instance is used to store all the information related to an LLVM module.
RegionBase(BlockT *Entry, BlockT *Exit, RegionInfoT *RI, DomTreeT *DT, RegionT *Parent=nullptr)
RegionT * getTopLevelRegion() const
RegionNodeBase(RegionT *Parent, BlockT *Entry, bool isSubRegion=false)
BlockT * getEntry() const
BasicBlock * getNodeAs() const
static df_iterator begin(const NodeRef &G)
static df_iterator end(const NodeRef &G)
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
DomTreeNodeBase< MachineBasicBlock > MachineDomTreeNode
static NodeRef getEntryNode(MachineRegionInfoPass *RI)
Definition MachineRegionInfo.h:162
df_iterator< NodeRef, df_iterator_default_set< NodeRef >, false, GraphTraits< FlatIt< NodeRef > > > nodes_iterator
Definition MachineRegionInfo.h:159
static nodes_iterator nodes_end(MachineRegionInfoPass *RI)
Definition MachineRegionInfo.h:170
static nodes_iterator nodes_begin(MachineRegionInfoPass *RI)
Definition MachineRegionInfo.h:166
df_iterator< NodeRef, df_iterator_default_set< NodeRef >, false, GraphTraits< FlatIt< NodeRef > > > nodes_iterator
Definition MachineRegionInfo.h:139
static nodes_iterator nodes_end(MachineRegionInfo *RI)
Definition MachineRegionInfo.h:151
static NodeRef getEntryNode(MachineRegionInfo *RI)
Definition MachineRegionInfo.h:142
static nodes_iterator nodes_begin(MachineRegionInfo *RI)
Definition MachineRegionInfo.h:147
typename MachineRegionInfo *::UnknownGraphTypeError NodeRef
MachineInstr InstT
Definition MachineRegionInfo.h:40
MachineFunction FuncT
Definition MachineRegionInfo.h:31
MachineRegionNode RegionNodeT
Definition MachineRegionInfo.h:34
MachineRegionInfo RegionInfoT
Definition MachineRegionInfo.h:35
MachineDominanceFrontier DomFrontierT
Definition MachineRegionInfo.h:39
MachineBasicBlock BlockT
Definition MachineRegionInfo.h:32
MachineLoopInfo LoopInfoT
Definition MachineRegionInfo.h:42
MachineLoop LoopT
Definition MachineRegionInfo.h:41
MachineDomTreeNode DomTreeNodeT
Definition MachineRegionInfo.h:37
MachinePostDominatorTree PostDomTreeT
Definition MachineRegionInfo.h:38
MachineDominatorTree DomTreeT
Definition MachineRegionInfo.h:36
MachineRegion RegionT
Definition MachineRegionInfo.h:33
static unsigned getNumSuccessors(MachineBasicBlock *BB)
Definition MachineRegionInfo.h:44