Go to the documentation of this file.
14 #ifndef LLVM_CODEGEN_MACHINEPOSTDOMINATORS_H
15 #define LLVM_CODEGEN_MACHINEPOSTDOMINATORS_H
29 std::unique_ptr<PostDomTreeT> PDT;
47 return PDT->getNode(
BB);
51 return PDT->getNode(
BB);
56 return PDT->dominates(A,
B);
60 return PDT->dominates(A,
B);
65 return PDT->properlyDominates(A,
B);
70 return PDT->properlyDominates(A,
B);
74 return PDT->isVirtualRoot(
Node);
79 return PDT->findNearestCommonDominator(A,
B);
This is an optimization pass for GlobalISel generic memory operations.
bool properlyDominates(const MachineDomTreeNode *A, const MachineDomTreeNode *B) const
bool properlyDominates(const MachineBasicBlock *A, const MachineBasicBlock *B) const
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
MachineDomTreeNode * getRootNode() const
Represent the analysis usage information of a pass.
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
This class implements an extremely fast bulk output stream that can only output to a stream.
MachineDomTreeNode * getNode(MachineBasicBlock *BB) const
MachineDomTreeNode * operator[](MachineBasicBlock *BB) const
void releaseMemory() override
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memo...
FunctionPass * createMachinePostDominatorTreePass()
A Module instance is used to store all the information related to an LLVM module.
void print(llvm::raw_ostream &OS, const Module *M=nullptr) const override
print - Print out the internal state of the pass.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Core dominator tree base class.
void verifyAnalysis() const override
verifyAnalysis() - This member can be implemented by a analysis pass to check state of analysis infor...
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
Base class for the actual dominator tree node.
MachinePostDominatorTree - an analysis pass wrapper for DominatorTree used to compute the post-domina...
bool dominates(const MachineDomTreeNode *A, const MachineDomTreeNode *B) const
MachinePostDominatorTree()
bool runOnMachineFunction(MachineFunction &MF) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
FunctionPass class - This class is used to implement most global optimizations.
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
MachineBasicBlock * findNearestCommonDominator(MachineBasicBlock *A, MachineBasicBlock *B) const
bool isVirtualRoot(const MachineDomTreeNode *Node) const
bool dominates(const MachineBasicBlock *A, const MachineBasicBlock *B) const