Lines Matching defs:ExitingBB

159   bool linearFunctionTestReplace(Loop *L, BasicBlock *ExitingBB,
702 static bool isLoopExitTestBasedOn(Value *V, BasicBlock *ExitingBB) {
703 BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
715 static bool needsLFTR(Loop *L, BasicBlock *ExitingBB) {
722 BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
836 static PHINode *FindLoopCounter(Loop *L, BasicBlock *ExitingBB,
841 Value *Cond = cast<BranchInst>(ExitingBB->getTerminator())->getCondition();
871 if (!isLoopExitTestBasedOn(Phi, ExitingBB) &&
872 !isLoopExitTestBasedOn(IncPhi, ExitingBB))
885 !mustExecuteUBIfPoisonOnPathTo(Phi, ExitingBB->getTerminator(), DT))
916 static Value *genLoopLimit(PHINode *IndVar, BasicBlock *ExitingBB,
942 ExitingBB->getTerminator());
951 linearFunctionTestReplace(Loop *L, BasicBlock *ExitingBB,
966 if (ExitingBB == L->getLoopLatch()) {
973 isLoopExitTestBasedOn(IncVar, ExitingBB) ||
974 mustExecuteUBIfPoisonOnPathTo(IncVar, ExitingBB->getTerminator(), DT);
1002 IndVar, ExitingBB, ExitCount, UsePostInc, L, Rewriter, SE);
1008 BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
1191 static Constant *createFoldedExitCond(const Loop *L, BasicBlock *ExitingBB,
1193 BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
1194 bool ExitIfTrue = !L->contains(*succ_begin(ExitingBB));
1200 static void foldExit(const Loop *L, BasicBlock *ExitingBB, bool IsTaken,
1202 BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
1203 auto *NewCond = createFoldedExitCond(L, ExitingBB, IsTaken);
1246 createInvariantCond(const Loop *L, BasicBlock *ExitingBB,
1255 bool ExitIfTrue = !L->contains(*succ_begin(ExitingBB));
1259 BranchInst *BI = cast<BranchInst>(ExitingBB->getTerminator());
1265 createReplacement(ICmpInst *ICmp, const Loop *L, BasicBlock *ExitingBB,
1273 auto *BI = cast<BranchInst>(ExitingBB->getTerminator());
1281 return createFoldedExitCond(L, ExitingBB, /*IsTaken*/ !*EV);
1317 return createFoldedExitCond(L, ExitingBB, /*IsTaken*/ false);
1319 return createInvariantCond(L, ExitingBB, *LIP, Rewriter);
1323 const Loop *L, BranchInst *BI, BasicBlock *ExitingBB, const SCEV *MaxIter,
1373 SE->getExitCount(L, ExitingBB,
1406 createReplacement(OldCond, L, ExitingBB, MaxIter, Inverted,
1439 for (auto *ExitingBB : ExitingBlocks) {
1440 auto *BI = dyn_cast<BranchInst>(ExitingBB->getTerminator());
1466 const DataLayout &DL = ExitingBB->getDataLayout();
1485 for (auto *ExitingBB : ExitingBlocks) {
1486 auto *BI = dyn_cast<BranchInst>(ExitingBB->getTerminator());
1541 const DataLayout &DL = ExitingBB->getDataLayout();
1566 llvm::erase_if(ExitingBlocks, [&](BasicBlock *ExitingBB) {
1570 if (LI->getLoopFor(ExitingBB) != L)
1574 BranchInst *BI = dyn_cast<BranchInst>(ExitingBB->getTerminator());
1579 if (!DT->dominates(ExitingBB, L->getLoopLatch()))
1639 for (BasicBlock *ExitingBB : ExitingBlocks) {
1640 const SCEV *ExactExitCount = SE->getExitCount(L, ExitingBB);
1642 L, ExitingBB, ScalarEvolution::ExitCountKind::SymbolicMaximum);
1646 auto *BI = cast<BranchInst>(ExitingBB->getTerminator());
1648 return optimizeLoopExitWithUnknownExitCount(L, BI, ExitingBB,
1685 foldExit(L, ExitingBB, true, DeadInsts);
1705 foldExit(L, ExitingBB, false, DeadInsts);
1715 foldExit(L, ExitingBB, false, DeadInsts);
1756 auto BadExit = [&](BasicBlock *ExitingBB) {
1760 if (LI->getLoopFor(ExitingBB) != L)
1764 BranchInst *BI = dyn_cast<BranchInst>(ExitingBB->getTerminator());
1780 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB);
1829 assert(llvm::all_of(ExitingBlocks, [&](BasicBlock *ExitingBB) {
1830 return DT->dominates(ExitingBB, L->getLoopLatch());
1861 for (BasicBlock *ExitingBB : ExitingBlocks) {
1862 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB);
1864 auto *BI = cast<BranchInst>(ExitingBB->getTerminator());
1978 for (BasicBlock *ExitingBB : ExitingBlocks) {
1980 if (!isa<BranchInst>(ExitingBB->getTerminator()))
1986 if (LI->getLoopFor(ExitingBB) != L)
1989 if (!needsLFTR(L, ExitingBB))
1992 const SCEV *ExitCount = SE->getExitCount(L, ExitingBB);
2003 PHINode *IndVar = FindLoopCounter(L, ExitingBB, ExitCount, SE, DT);
2016 Changed |= linearFunctionTestReplace(L, ExitingBB,