diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2020-01-22 20:31:01 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2020-01-22 20:31:01 +0000 | 
| commit | 8bcb0991864975618c09697b1aca10683346d9f0 (patch) | |
| tree | 0afab28faa50e5f27698f8dd6c1921fff8d25e39 /contrib/llvm-project/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp | |
| parent | b14637d118e110006a149a79b649c5695e7f419a (diff) | |
| parent | 1d5ae1026e831016fc29fd927877c86af904481f (diff) | |
Notes
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp | 27 | 
1 files changed, 3 insertions, 24 deletions
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp b/contrib/llvm-project/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp index 37389a695b45..889ea5ca9970 100644 --- a/contrib/llvm-project/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp +++ b/contrib/llvm-project/llvm/lib/Transforms/Utils/LoopRotationUtils.cpp @@ -615,30 +615,9 @@ bool LoopRotate::simplifyLoopLatch(Loop *L) {    LLVM_DEBUG(dbgs() << "Folding loop latch " << Latch->getName() << " into "                      << LastExit->getName() << "\n"); -  // Hoist the instructions from Latch into LastExit. -  Instruction *FirstLatchInst = &*(Latch->begin()); -  LastExit->getInstList().splice(BI->getIterator(), Latch->getInstList(), -                                 Latch->begin(), Jmp->getIterator()); - -  // Update MemorySSA -  if (MSSAU) -    MSSAU->moveAllAfterMergeBlocks(Latch, LastExit, FirstLatchInst); - -  unsigned FallThruPath = BI->getSuccessor(0) == Latch ? 0 : 1; -  BasicBlock *Header = Jmp->getSuccessor(0); -  assert(Header == L->getHeader() && "expected a backward branch"); - -  // Remove Latch from the CFG so that LastExit becomes the new Latch. -  BI->setSuccessor(FallThruPath, Header); -  Latch->replaceSuccessorsPhiUsesWith(LastExit); -  Jmp->eraseFromParent(); - -  // Nuke the Latch block. -  assert(Latch->empty() && "unable to evacuate Latch"); -  LI->removeBlock(Latch); -  if (DT) -    DT->eraseNode(Latch); -  Latch->eraseFromParent(); +  DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Eager); +  MergeBlockIntoPredecessor(Latch, &DTU, LI, MSSAU, nullptr, +                            /*PredecessorWithTwoSuccessors=*/true);    if (MSSAU && VerifyMemorySSA)      MSSAU->getMemorySSA()->verifyMemorySSA();  | 
