9#ifndef LLVM_CODEGEN_MACHINEREGIONINFO_H
10#define LLVM_CODEGEN_MACHINEREGIONINFO_H
75 :
public RegionInfoBase<RegionTraits<MachineFunction>> {
77 using Base = RegionInfoBase<RegionTraits<MachineFunction>>;
88 Base::operator=(std::move(
static_cast<Base &
>(
RHS)));
95 MachineFunctionAnalysisManager::Invalidator &);
142 void releaseMemory()
override;
143 void verifyAnalysis()
const override;
216extern template class RegionBase<RegionTraits<MachineFunction>>;
217extern template class RegionNodeBase<RegionTraits<MachineFunction>>;
218extern template class RegionInfoBase<RegionTraits<MachineFunction>>;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)
static RegisterPass< DebugifyFunctionPass > DF("debugify-function", "Attach debug info to a function")
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...
Result run(MachineFunction &F, MachineFunctionAnalysisManager &AM)
MachineRegionInfo & getRegionInfo()
~MachineRegionInfoPass() override
const MachineRegionInfo & getRegionInfo() const
MachineRegionInfoPrinterPass(raw_ostream &OS)
~MachineRegionInfo() override
RegionInfoBase< RegionTraits< MachineFunction > > Base
MachineRegionInfo & operator=(MachineRegionInfo &&RHS)
MachineRegionInfo(MachineRegionInfo &&Arg)
bool operator==(const MachineRegion &RN) const
MachineRegionNode(MachineRegion *Parent, MachineBasicBlock *Entry, bool isSubRegion=false)
LLVM_ABI ~MachineRegion()
LLVM_ABI MachineRegion(MachineBasicBlock *Entry, MachineBasicBlock *Exit, MachineRegionInfo *RI, MachineDominatorTree *DT, MachineRegion *Parent=nullptr)
bool operator==(const MachineRegionNode &RN) const
A Module instance is used to store all the information related to an LLVM module.
A set of analyses that are preserved following a run of a transformation pass.
RegionBase(BlockT *Entry, BlockT *Exit, RegionInfoT *RI, DomTreeT *DT, RegionT *Parent=nullptr)
void updateRegionTree(RegionInfoT &RI, TheRegionT *R)
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.
void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
AnalysisManager< MachineFunction > MachineFunctionAnalysisManager
DomTreeNodeBase< MachineBasicBlock > MachineDomTreeNode
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...
static NodeRef getEntryNode(MachineRegionInfoPass *RI)
df_iterator< NodeRef, df_iterator_default_set< NodeRef >, false, GraphTraits< FlatIt< NodeRef > > > nodes_iterator
static nodes_iterator nodes_end(MachineRegionInfoPass *RI)
static nodes_iterator nodes_begin(MachineRegionInfoPass *RI)
df_iterator< NodeRef, df_iterator_default_set< NodeRef >, false, GraphTraits< FlatIt< NodeRef > > > nodes_iterator
static nodes_iterator nodes_end(MachineRegionInfo *RI)
static NodeRef getEntryNode(MachineRegionInfo *RI)
static nodes_iterator nodes_begin(MachineRegionInfo *RI)
typename MachineRegionInfo *::UnknownGraphTypeError NodeRef
MachineRegionNode RegionNodeT
MachineRegionInfo RegionInfoT
MachineDominanceFrontier DomFrontierT
MachineLoopInfo LoopInfoT
MachineDomTreeNode DomTreeNodeT
MachinePostDominatorTree PostDomTreeT
MachineDominatorTree DomTreeT
static unsigned getNumSuccessors(MachineBasicBlock *BB)
A CRTP mix-in for passes that should not be skipped.