Lines Matching defs:NewExit

211 static void ConnectEpilog(Loop *L, Value *ModVal, BasicBlock *NewExit,
228 // NewExit (PN)
235 // Update PHI nodes at NewExit and Exit.
236 for (PHINode &PN : NewExit->phis()) {
238 // Exit was split by SplitBlockPredecessors into Exit and NewExit
240 // NewExit:
249 // There is EpilogPreHeader incoming block instead of NewExit as
250 // NewExit was spilt 1 more time to get EpilogPreHeader.
270 // Change EpilogPreHeader incoming block to NewExit.
272 NewExit);
274 // NewExit:
278 // EpilogPN = PHI [PN, NewExit], [VMap[I], EpilogLatch]
281 // Create PHI nodes at NewExit (from the unrolling loop Latch and PreHeader).
291 NewPN->insertBefore(NewExit->getFirstNonPHIIt());
304 Instruction *InsertPt = NewExit->getTerminator();
322 auto *NewDom = DT->findNearestCommonDominator(Exit, NewExit);
328 SplitBlockPredecessors(NewExit, NewExitPreds, ".loopexit", DT, LI, nullptr,
700 BasicBlock *NewExit = nullptr;
711 NewExit = SplitBlockPredecessors(LatchExit, {Latch}, ".unr-lcssa", DT, LI,
713 // NewExit gets its DebugLoc from LatchExit, which is not part of the
715 // Fix this by setting Loop's DebugLoc to NewExit.
716 auto *NewExitTerminator = NewExit->getTerminator();
718 // Split NewExit to insert epilog remainder loop.
719 EpilogPreHeader = SplitBlock(NewExit, NewExitTerminator, DT, LI);
730 LI->removeBlock(NewExit);
731 ParentL->addBasicBlockToLoop(NewExit, *LI);
756 // *NewExit ...
794 BasicBlock *RemainderLoop = UseEpilogRemainder ? NewExit : PrologPreHeader;
807 DT->changeImmediateDominator(NewExit, PreHeader);
906 // NewExit PrologExit
928 ConnectEpilog(L, ModVal, NewExit, LatchExit, PreHeader, EpilogPreHeader,