LLVM
17.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 . More... | |
#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::AArch64PACKey::DA, llvm::AArch64PACKey::DB, llvm::DominatorTreeBase< NodeT, IsPostDom >::getNode(), and llvm::Instruction::getParent().
Referenced by llvm::isSafeToMoveBefore().
|
static |
Definition at line 269 of file CodeMoverUtils.cpp.
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" | |||
) |