Go to the documentation of this file.
9 #ifndef LLVM_CODEGEN_MACHINEDOMINANCEFRONTIER_H
10 #define LLVM_CODEGEN_MACHINEDOMINANCEFRONTIER_H
41 return Base.getRoots();
45 return Base.getRoot();
49 return Base.isPostDominator();
77 return Base.addBasicBlock(
BB, frontier);
81 return Base.removeBlock(
BB);
93 return Base.compareDomSet(DS1, DS2);
109 #endif // LLVM_CODEGEN_MACHINEDOMINANCEFRONTIER_H
bool runOnMachineFunction(MachineFunction &F) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
This is an optimization pass for GlobalISel generic memory operations.
bool isPostDominator() const
MachineDominanceFrontier()
MachineBasicBlock * getRoot() const
void removeBlock(MachineBasicBlock *BB)
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
iterator find(MachineBasicBlock *B)
DominanceFrontierBase< MachineBasicBlock, false >::iterator iterator
typename DomSetMapType::iterator iterator
Represent the analysis usage information of a pass.
MachineDominanceFrontier & operator=(const MachineDominanceFrontier &)=delete
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
const SmallVectorImpl< MachineBasicBlock * > & getRoots() const
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
const_iterator end() const
ForwardDominanceFrontierBase< MachineBasicBlock > & getBase()
bool compare(DominanceFrontierBase< MachineBasicBlock, false > &Other) const
DominanceFrontier Class - Concrete subclass of DominanceFrontierBase that is used to compute a forwar...
iterator addBasicBlock(MachineBasicBlock *BB, const DomSetType &frontier)
DominanceFrontierBase< MachineBasicBlock, false >::const_iterator const_iterator
typename DomSetMapType::const_iterator const_iterator
DominanceFrontierBase - Common base class for computing forward and inverse dominance frontiers for a...
Core dominator tree base class.
Base class for the actual dominator tree node.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - This function should be overriden by passes that need analysis information to do t...
const_iterator begin() const
std::set< BlockT * > DomSetType
void removeFromFrontier(iterator I, MachineBasicBlock *Node)
DominanceFrontierBase< MachineBasicBlock, false >::DomSetType DomSetType
const_iterator find(MachineBasicBlock *B) const
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Common register allocation spilling lr str ldr sxth r3 ldr mla r4 can lr mov lr str ldr sxth r3 mla r4 and then merge mul and lr str ldr sxth r3 mla r4 It also increase the likelihood the store may become dead bb27 Successors according to LLVM BB
bool compareDomSet(DomSetType &DS1, const DomSetType &DS2) const
Optional< std::vector< StOtherPiece > > Other
void addToFrontier(iterator I, MachineBasicBlock *Node)