|
LLVM 22.0.0git
|
#include "llvm/Transforms/Utils/CodeMoverUtils.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/DependenceAnalysis.h"#include "llvm/Analysis/PostDominators.h"#include "llvm/Analysis/ValueTracking.h"#include "llvm/IR/Dominators.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "codemover-utils" |
Functions | |
| STATISTIC (HasDependences, "Cannot move across instructions that has memory dependences") | |
| STATISTIC (MayThrowException, "Cannot move across instructions that may throw") | |
| STATISTIC (NotControlFlowEquivalent, "Instructions are not control flow equivalent") | |
| STATISTIC (NotMovedPHINode, "Movement of PHINodes are not supported") | |
| STATISTIC (NotMovedTerminator, "Movement of Terminator are not supported") | |
| static bool | domTreeLevelBefore (DominatorTree *DT, const Instruction *InstA, const Instruction *InstB) |
| static bool | reportInvalidCandidate (const Instruction &I, llvm::Statistic &Stat) |
| static void | collectInstructionsInBetween (Instruction &StartInst, const Instruction &EndInst, SmallPtrSetImpl< Instruction * > &InBetweenInsts) |
Collect all instructions in between StartInst and EndInst, and store them in InBetweenInsts. | |
| #define DEBUG_TYPE "codemover-utils" |
Definition at line 23 of file CodeMoverUtils.cpp.
|
static |
Collect all instructions in between StartInst and EndInst, and store them in InBetweenInsts.
Get the next instructions of I, and push them to WorkList.
Definition at line 280 of file CodeMoverUtils.cpp.
References assert(), llvm::SmallPtrSetImpl< PtrType >::begin(), llvm::SmallPtrSetImplBase::empty(), llvm::SmallPtrSetImpl< PtrType >::erase(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), and llvm::successors().
Referenced by llvm::isSafeToMoveBefore().
|
static |
Definition at line 95 of file CodeMoverUtils.cpp.
References llvm::Instruction::comesBefore(), llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), and llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent().
Referenced by llvm::isSafeToMoveBefore().
|
static |
Definition at line 269 of file CodeMoverUtils.cpp.
References llvm::dbgs(), I, and LLVM_DEBUG.
Referenced by llvm::isSafeToMoveBefore().
| STATISTIC | ( | HasDependences | , |
| "Cannot move across instructions that has memory dependences" | ) |
| STATISTIC | ( | MayThrowException | , |
| "Cannot move across instructions that may throw" | ) |
| STATISTIC | ( | NotControlFlowEquivalent | , |
| "Instructions are not control flow equivalent" | ) |
| STATISTIC | ( | NotMovedPHINode | , |
| "Movement of PHINodes are not supported" | ) |
| STATISTIC | ( | NotMovedTerminator | , |
| "Movement of Terminator are not supported" | ) |
References llvm::CallingConv::C.