LLVM 20.0.0git
Namespaces | Functions
CodeMoverUtils.h File Reference

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Functions

bool llvm::isControlFlowEquivalent (const Instruction &I0, const Instruction &I1, const DominatorTree &DT, const PostDominatorTree &PDT)
 Return true if I0 and I1 are control flow equivalent.
 
bool llvm::isControlFlowEquivalent (const BasicBlock &BB0, const BasicBlock &BB1, const DominatorTree &DT, const PostDominatorTree &PDT)
 Return true if BB0 and BB1 are control flow equivalent.
 
bool llvm::isSafeToMoveBefore (Instruction &I, Instruction &InsertPoint, DominatorTree &DT, const PostDominatorTree *PDT=nullptr, DependenceInfo *DI=nullptr, bool CheckForEntireBlock=false)
 Return true if I can be safely moved before InsertPoint.
 
bool llvm::isSafeToMoveBefore (BasicBlock &BB, Instruction &InsertPoint, DominatorTree &DT, const PostDominatorTree *PDT=nullptr, DependenceInfo *DI=nullptr)
 Return true if all instructions (except the terminator) in BB can be safely moved before InsertPoint.
 
void llvm::moveInstructionsToTheBeginning (BasicBlock &FromBB, BasicBlock &ToBB, DominatorTree &DT, const PostDominatorTree &PDT, DependenceInfo &DI)
 Move instructions, in an order-preserving manner, from FromBB to the beginning of ToBB when proven safe.
 
void llvm::moveInstructionsToTheEnd (BasicBlock &FromBB, BasicBlock &ToBB, DominatorTree &DT, const PostDominatorTree &PDT, DependenceInfo &DI)
 Move instructions, in an order-preserving manner, from FromBB to the end of ToBB when proven safe.
 
bool llvm::nonStrictlyPostDominate (const BasicBlock *ThisBlock, const BasicBlock *OtherBlock, const DominatorTree *DT, const PostDominatorTree *PDT)
 In case that two BBs ThisBlock and OtherBlock are control flow equivalent but they do not strictly dominate and post-dominate each other, we determine if ThisBlock is reached after OtherBlock in the control flow.
 
bool llvm::isReachedBefore (const Instruction *I0, const Instruction *I1, const DominatorTree *DT, const PostDominatorTree *PDT)