Lines Matching refs:LI

194                                          const LoopInfo &LI) {
410 DominatorTree &DT, LoopInfo &LI,
421 if (Loop *ExitL = LI.getLoopFor(ExitBB))
435 assert(OldParentL == LI.getLoopFor(&Preheader) &&
437 LI.changeLoopFor(&Preheader, NewParentL);
446 LI.addTopLevelLoop(&L);
465 formLCSSA(*OldContainingL, DT, &LI, SE);
472 formDedicatedExitBlocks(OldContainingL, &DT, &LI, MSSAU,
481 const LoopInfo &LI) {
482 Loop *TopMost = LI.getLoopFor(ExitBB);
510 LoopInfo &LI, ScalarEvolution *SE,
528 Invariants = collectHomogenousInstGraphLoopInvariants(L, *CondInst, LI);
584 if (const Loop *ExitL = getTopMostExitingLoop(LoopExitBB, LI))
599 BasicBlock *NewPH = SplitEdge(OldPH, L.getHeader(), &DT, &LI, MSSAU);
612 SplitBlock(LoopExitBB, LoopExitBB->begin(), &DT, &LI, MSSAU, "", false);
706 hoistLoopToNewParent(L, *NewPH, DT, LI, MSSAU, SE);
744 LoopInfo &LI, ScalarEvolution *SE,
800 Loop *ExitL = getTopMostExitingLoop(DefaultExitBB, LI);
807 Loop *ExitL = getTopMostExitingLoop(CaseI->getCaseSuccessor(), LI);
864 BasicBlock *NewPH = SplitEdge(OldPH, L.getHeader(), &DT, &LI, MSSAU);
891 SplitBlock(DefaultExitBB, DefaultExitBB->begin(), &DT, &LI, MSSAU);
918 SplitExitBB = SplitBlock(ExitBB, ExitBB->begin(), &DT, &LI, MSSAU);
1025 hoistLoopToNewParent(L, *NewPH, DT, LI, MSSAU, SE);
1049 LoopInfo &LI, ScalarEvolution *SE,
1088 if (!unswitchTrivialSwitch(L, *SI, DT, LI, SE, MSSAU))
1121 if (!unswitchTrivialBranch(L, *BI, DT, LI, SE, MSSAU))
1174 DominatorTree &DT, LoopInfo &LI, MemorySSAUpdater *MSSAU,
1220 auto *MergeBB = SplitBlock(ExitBB, ExitBB->begin(), &DT, &LI, MSSAU);
1365 const ValueToValueMapTy &VMap, LoopInfo &LI) {
1372 if (LI.getLoopFor(BB) == &OrigL)
1373 LI.changeLoopFor(ClonedBB, &ClonedL);
1379 Loop *ClonedRootL = LI.AllocateLoop();
1383 LI.addTopLevelLoop(ClonedRootL);
1400 Loop *ClonedL = LI.AllocateLoop();
1424 const ValueToValueMapTy &VMap, LoopInfo &LI,
1444 if (Loop *ExitL = LI.getLoopFor(ExitBB)) {
1511 ClonedL = LI.AllocateLoop();
1513 ParentL->addBasicBlockToLoop(ClonedPH, LI);
1516 LI.addTopLevelLoop(ClonedL);
1532 if (LI.getLoopFor(BB) == &OrigL) {
1533 ClonedL->addBasicBlockToLoop(ClonedBB, LI);
1564 cloneLoopNest(*ChildL, ClonedL, VMap, LI);
1641 OuterL->addBasicBlockToLoop(BB, LI);
1647 assert(LI.getLoopFor(BB) == OuterL &&
1668 *ChildL, ExitLoopMap.lookup(ClonedChildHeader), VMap, LI));
1704 DominatorTree &DT, LoopInfo &LI,
1760 LI.destroy(ChildL);
1770 LI.changeLoopFor(BB, nullptr);
1797 LoopInfo &LI) {
1843 if (Loop *InnerL = LI.getLoopFor(BB))
1908 LoopInfo &LI,
1920 if (Loop *ExitL = LI.getLoopFor(ExitBB)) {
1929 auto LoopBlockSet = recomputeLoopBlockSet(L, LI);
1947 LI.changeLoopFor(PH, ParentL);
1952 LI.addTopLevelLoop(&L);
1977 return LI.getLoopDepth(LHS) < LI.getLoopDepth(RHS);
2000 Loop &ExitL = *LI.getLoopFor(ExitBB);
2024 ExitL.contains(LI.getLoopFor(PredBB))) &&
2045 if (Loop *BBL = LI.getLoopFor(BB))
2047 LI.changeLoopFor(BB, &ExitL);
2059 if (Loop *BBL = LI.getLoopFor(BB))
2061 LI.changeLoopFor(BB, nullptr);
2086 if (auto *NewParentL = LI.getLoopFor(HoistedL->getLoopPreheader()))
2089 LI.addTopLevelLoop(HoistedL);
2100 LI.removeLoop(llvm::find(LI, &L));
2105 LI.destroy(&L);
2178 IVConditionInfo &PartialIVInfo, DominatorTree &DT, LoopInfo &LI,
2249 assert(LI.getLoopFor(ParentBB) == &L && "Branch in an inner loop!");
2256 LBRPO.perform(&LI);
2267 Loop *NewOuterExitL = getTopMostExitingLoop(ExitBB, LI);
2311 BasicBlock *LoopPH = SplitEdge(SplitBB, L.getHeader(), &DT, &LI, MSSAU);
2324 DominatingSucc, *VMaps.back(), DTUpdates, AC, DT, LI, MSSAU, SE);
2502 buildClonedLoops(L, ExitBlocks, *VMap, LI, NonChildClonedLoops);
2507 deleteDeadBlocksFromLoop(L, ExitBlocks, DT, LI, MSSAU, SE, LoopUpdater);
2514 rebuildLoopAfterUnswitch(L, ExitBlocks, LI, HoistedLoops, SE);
2590 assert(ChildL->isRecursivelyLCSSAForm(DT, LI) &&
2597 formLCSSA(UpdateL, DT, &LI, SE);
2603 formDedicatedExitBlocks(&UpdateL, &DT, &LI, MSSAU, /*PreserveLCSSA*/ true);
2633 LI.verify(DT);
2710 /// It also makes all relevant DT and LI updates, so that all structures are in
2713 LoopInfo &LI, MemorySSAUpdater *MSSAU,
2720 SI->getMetadata(LLVMContext::MD_prof), &DTU, &LI);
2761 /// It also makes all relevant DT and LI updates, so that all structures are in
2764 DominatorTree &DT, LoopInfo &LI,
2776 GI->getMetadata(LLVMContext::MD_prof), &DTU, &LI);
2801 LI.verify(DT);
2820 const Instruction &TI, const Loop &L, const LoopInfo &LI,
2842 : std::distance(LI.begin(), LI.end()));
2901 const Loop &L, const LoopInfo &LI, AAResults &AA,
2916 L, *static_cast<Instruction *>(Cond), LI);
2932 if (LI.getLoopFor(BB) != &L)
3083 DominatorTree &DT, LoopInfo &LI,
3088 assert(LI.getLoopFor(Candidate.TI->getParent()) == &L &&
3150 L.addBasicBlockToLoop(CheckBlock, LI);
3154 LI.verify(DT);
3221 const DominatorTree &DT, const LoopInfo &LI, AAResults &AA,
3244 if (LI.getLoopFor(BB) != &L)
3273 static bool isSafeForNoNTrivialUnswitching(Loop &L, LoopInfo &LI) {
3294 RPOT.perform(&LI);
3295 if (containsIrreducibleCFG<const BasicBlock *>(RPOT, LI))
3318 const DominatorTree &DT, const LoopInfo &LI, AssumptionCache &AC,
3445 CalculateUnswitchCostMultiplier(TI, L, LI, DT, UnswitchCandidates);
3493 static bool unswitchBestCondition(Loop &L, DominatorTree &DT, LoopInfo &LI,
3504 PartialIVCondBranch, L, LI, AA, MSSAU);
3507 PartialIVCondBranch, L, DT, LI, AA,
3518 UnswitchCandidates, L, DT, LI, AC, TTI, PartialIVInfo);
3531 Best = injectPendingInvariantConditions(Best, L, DT, LI, AC, MSSAU);
3548 Best.TI = turnSelectIntoBranch(SI, DT, LI, MSSAU, &AC);
3553 turnGuardIntoBranch(cast<IntrinsicInst>(Best.TI), L, DT, LI, MSSAU);
3560 LI, AC, SE, MSSAU, LoopUpdater, InsertFreeze,
3572 /// The `DT`, `LI`, `AC`, `AA`, `TTI` parameters are required analyses that are
3586 static bool unswitchLoop(Loop &L, DominatorTree &DT, LoopInfo &LI,
3592 assert(L.isRecursivelyLCSSAForm(DT, LI) &&
3600 if (Trivial && unswitchAllTrivialConditions(L, DT, LI, SE, MSSAU)) {
3663 if (!isSafeForNoNTrivialUnswitching(L, LI))
3674 if (unswitchBestCondition(L, DT, LI, AC, AA, TTI, SE, MSSAU, LoopUpdater))
3700 if (!unswitchLoop(L, AR.DT, AR.LI, AR.AC, AR.AA, AR.TTI, Trivial, NonTrivial,