Go to the documentation of this file.
29 "MachinePostDominator Tree Construction",
true,
true)
41 PDT = std::make_unique<PostDomTreeT>();
57 NCD = PDT->findNearestCommonDominator(NCD,
BB);
60 if (PDT->isVirtualRoot(PDT->getNode(NCD)))
70 errs() <<
"MachinePostDominatorTree verification failed\n";
This is an optimization pass for GlobalISel generic memory operations.
bool VerifyMachineDomInfo
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
raw_fd_ostream & errs()
This returns a reference to a raw_ostream for standard error.
bool empty() const
empty - Check if the array is empty.
void getAnalysisUsage(AnalysisUsage &AU) const override
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
Represent the analysis usage information of a pass.
This class implements an extremely fast bulk output stream that can only output to a stream.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
ArrayRef< T > drop_front(size_t N=1) const
Drop the first N elements of the array.
void initializeMachinePostDominatorTreePass(PassRegistry &)
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
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.
const T & front() const
front - Get the first element.
MachinePostDominatorTree - an analysis pass wrapper for DominatorTree used to compute the post-domina...
void setPreservesAll()
Set by analyses that do not transform their input at all.
MachinePostDominatorTree()
bool runOnMachineFunction(MachineFunction &MF) override
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformat...
INITIALIZE_PASS(MachinePostDominatorTree, "machinepostdomtree", "MachinePostDominator Tree Construction", true, true) MachinePostDominatorTree
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
*Add support for compiling functions in both ARM and Thumb then taking the smallest *Add support for compiling individual basic blocks in thumb when in a larger ARM function This can be used for presumed cold like paths to abort(failure path of asserts)