LLVM: lib/Transforms/Scalar/LoopSimplifyCFG.cpp File Reference (original) (raw)
Go to the source code of this file.
Functions | |
---|---|
STATISTIC (NumTerminatorsFolded, "Number of terminators folded to unconditional branches") | |
STATISTIC (NumLoopBlocksDeleted, "Number of loop blocks deleted") | |
STATISTIC (NumLoopExitsDeleted, "Number of loop exiting edges deleted") | |
static BasicBlock * | getOnlyLiveSuccessor (BasicBlock *BB) |
If BB is a switch or a conditional branch, but only one of its successors can be reached from this block in runtime, return this successor. | |
static void | removeBlockFromLoops (BasicBlock *BB, Loop *FirstLoop, Loop *LastLoop=nullptr) |
Removes BB from all loops from [FirstLoop, LastLoop) in parent chain. | |
static Loop * | getInnermostLoopFor (SmallPtrSetImpl< BasicBlock * > &BBs, Loop &L, LoopInfo &LI) |
Find innermost loop that contains at least one block from BBs and contains the header of loop L. | |
static bool | constantFoldTerminators (Loop &L, DominatorTree &DT, LoopInfo &LI, ScalarEvolution &SE, MemorySSAUpdater *MSSAU, bool &IsLoopDeleted) |
Turn branches and switches with known constant conditions into unconditional branches. | |
static bool | mergeBlocksIntoPredecessors (Loop &L, DominatorTree &DT, LoopInfo &LI, MemorySSAUpdater *MSSAU, ScalarEvolution &SE) |
static bool | simplifyLoopCFG (Loop &L, DominatorTree &DT, LoopInfo &LI, ScalarEvolution &SE, MemorySSAUpdater *MSSAU, bool &IsLoopDeleted) |
◆ DEBUG_TYPE
#define DEBUG_TYPE "loop-simplifycfg"
◆ constantFoldTerminators()
◆ getInnermostLoopFor()
◆ getOnlyLiveSuccessor()
◆ mergeBlocksIntoPredecessors()
Definition at line 660 of file LoopSimplifyCFG.cpp.
References llvm::Block, Blocks, llvm::ScalarEvolution::forgetBlockAndLoopDispositions(), llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::MemorySSAUpdater::getMemorySSA(), llvm::BasicBlock::getSinglePredecessor(), llvm::BasicBlock::getSingleSuccessor(), llvm::MergeBlockIntoPredecessor(), llvm::MemorySSA::verifyMemorySSA(), and llvm::VerifyMemorySSA.
Referenced by llvm::VPlanTransforms::createAndOptimizeReplicateRegions(), llvm::VPlanTransforms::optimize(), and simplifyLoopCFG().
◆ removeBlockFromLoops()
static void removeBlockFromLoops ( BasicBlock * BB, Loop * FirstLoop, Loop * LastLoop = nullptr ) | static |
---|
◆ simplifyLoopCFG()
◆ STATISTIC() [1/3]
STATISTIC | ( | NumLoopBlocksDeleted | , |
---|---|---|---|
"Number of loop blocks deleted" | |||
) |
◆ STATISTIC() [2/3]
STATISTIC | ( | NumLoopExitsDeleted | , |
---|---|---|---|
"Number of loop exiting edges deleted" | |||
) |
◆ STATISTIC() [3/3]
STATISTIC | ( | NumTerminatorsFolded | , |
---|---|---|---|
"Number of terminators folded to unconditional branches" | |||
) |