LLVM: lib/Transforms/Scalar/LoopTermFold.cpp File Reference (original) (raw)
Go to the source code of this file.
| Macros | |
|---|---|
| #define | DEBUG_TYPE "loop-term-fold" |
| Functions | |
|---|---|
| STATISTIC (NumTermFold, "Number of terminating condition fold recognized and performed") | |
| static std::optional< std::tuple< PHINode *, PHINode *, const SCEV *, bool > > | canFoldTermCondOfLoop (Loop *L, ScalarEvolution &SE, DominatorTree &DT, const LoopInfo &LI, const TargetTransformInfo &TTI) |
| static bool | RunTermFold (Loop *L, ScalarEvolution &SE, DominatorTree &DT, LoopInfo &LI, const TargetTransformInfo &TTI, TargetLibraryInfo &TLI, MemorySSA *MSSA) |
| INITIALIZE_PASS_BEGIN (LoopTermFold, "loop-term-fold", "Loop Terminator Folding", false, false) INITIALIZE_PASS_END(LoopTermFold |
| Variables | |
|---|---|
| loop term | fold |
| loop term Loop Terminator | Folding |
| loop term Loop Terminator | false |
◆ DEBUG_TYPE
#define DEBUG_TYPE "loop-term-fold"
◆ canFoldTermCondOfLoop()
Definition at line 52 of file LoopTermFold.cpp.
References llvm::cast(), llvm::dbgs(), DL, llvm::dyn_cast(), llvm::ScalarEvolution::getBackedgeTakenCount(), llvm::BranchInst::getCondition(), llvm::getLoopEstimatedTripCount(), llvm::User::getOperand(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), llvm::SCEVAddRecExpr::getPostIncExpr(), llvm::ScalarEvolution::getSCEV(), llvm::ScalarEvolution::getSmallConstantMaxTripCount(), llvm::SCEVAddRecExpr::getStepRecurrence(), llvm::BasicBlock::getTerminator(), llvm::ScalarEvolution::hasLoopInvariantBackedgeTakenCount(), llvm::SCEVNAryExpr::hasNoSelfWrap(), llvm::Instruction::hasPoisonGeneratingFlags(), llvm::SCEVAddRecExpr::isAffine(), llvm::isAlmostDeadIV(), llvm::SCEVExpander::isHighCostExpansion(), llvm::ScalarEvolution::isKnownNonZero(), llvm::SCEVExpander::isSafeToExpand(), llvm::ScalarEvolution::isSCEVable(), llvm::BranchInst::isUnconditional(), LHS, LLVM_DEBUG, llvm::matchSimpleRecurrence(), llvm::mustExecuteUBIfPoisonOnPathTo(), PostInc, RHS, and llvm::SCEVCheapExpansionBudget.
Referenced by RunTermFold().
◆ INITIALIZE_PASS_BEGIN()
| INITIALIZE_PASS_BEGIN | ( | LoopTermFold | , |
|---|---|---|---|
| "loop-term-fold" | , | ||
| "Loop Terminator Folding" | , | ||
| false | , | ||
| false | ) |
◆ RunTermFold()
Definition at line 230 of file LoopTermFold.cpp.
References assert(), canFoldTermCondOfLoop(), llvm::cast(), llvm::SCEVExpander::clear(), llvm::IRBuilderBase::CreateICmp(), llvm::dbgs(), llvm::DeleteDeadPHIs(), DL, llvm::Instruction::eraseFromParent(), llvm::SCEVExpander::expandCodeFor(), llvm::BranchInst::getCondition(), llvm::BranchInst::getSuccessor(), llvm::BasicBlock::getTerminator(), llvm::CmpInst::ICMP_EQ, llvm::SCEVExpander::isSafeToExpand(), LLVM_DEBUG, llvm::BranchInst::setCondition(), and llvm::BranchInst::swapSuccessors().
Referenced by llvm::LoopTermFoldPass::run().
◆ STATISTIC()
| STATISTIC | ( | NumTermFold | , |
|---|---|---|---|
| "Number of terminating condition fold recognized and performed" | ) |
◆ false
loop term Loop Terminator false
◆ fold
◆ Folding
loop term Loop Terminator Folding