reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/Scalar/LoopFuse.cpp
  216     return Preheader && Header && ExitingBlock && ExitBlock && Latch && L &&
  217            !L->isInvalid() && Valid;
  223     assert(!L->isInvalid() && "Loop is invalid!");
  224     assert(Preheader == L->getLoopPreheader() && "Preheader is out of sync");
  225     assert(Header == L->getHeader() && "Header is out of sync");
  226     assert(ExitingBlock == L->getExitingBlock() &&
  228     assert(ExitBlock == L->getExitBlock() && "Exit block is out of sync");
  229     assert(Latch == L->getLoopLatch() && "Latch is out of sync");
  261     assert(L && "Expecting loop to be valid.");
  263     return L->isLoopExiting(Latch);
  300       if (L->isInvalid())
  307     if (!SE.hasLoopInvariantBackedgeTakenCount(L)) {
  308       LLVM_DEBUG(dbgs() << "Loop " << L->getName()
  313     if (!L->isLoopSimplifyForm()) {
  314       LLVM_DEBUG(dbgs() << "Loop " << L->getName()
  337     assert(L && Preheader && "Fusion candidate not initialized properly!");
  340                                         L->getStartLoc(), Preheader)
  669     const SCEV *TripCount0 = SE.getBackedgeTakenCount(FC0.L);
  676     const SCEV *TripCount1 = SE.getBackedgeTakenCount(FC1.L);
  708         assert(!LDT.isRemovedLoop(FC0->L) &&
  712           assert(!LDT.isRemovedLoop(FC1->L) &&
  813           LDT.removeLoop(FC1->L);
  943       return accessDiffIsPositive(*FC0.L, *FC1.L, I0, I1, AnyDep);
  943       return accessDiffIsPositive(*FC0.L, *FC1.L, I0, I1, AnyDep);
  982     assert(FC0.L->getLoopDepth() == FC1.L->getLoopDepth());
  982     assert(FC0.L->getLoopDepth() == FC1.L->getLoopDepth());
 1021     for (BasicBlock *BB : FC1.L->blocks())
 1025             if (FC0.L->contains(Def->getParent())) {
 1271     SE.forgetLoop(FC1.L);
 1272     SE.forgetLoop(FC0.L);
 1275     SmallVector<BasicBlock *, 8> Blocks(FC1.L->block_begin(),
 1276                                         FC1.L->block_end());
 1278       FC0.L->addBlockEntry(BB);
 1279       FC1.L->removeBlockFromLoop(BB);
 1280       if (LI.getLoopFor(BB) != FC1.L)
 1282       LI.changeLoopFor(BB, FC0.L);
 1284     while (!FC1.L->empty()) {
 1285       const auto &ChildLoopIt = FC1.L->begin();
 1287       FC1.L->removeChildLoop(ChildLoopIt);
 1288       FC0.L->addChildLoop(ChildLoop);
 1292     LI.erase(FC1.L);
 1304     return FC0.L;
 1326     ORE.emit(RemarkKind(DEBUG_TYPE, Stat.getName(), FC0.L->getStartLoc(),
 1524     SE.forgetLoop(FC1.L);
 1525     SE.forgetLoop(FC0.L);
 1528     SmallVector<BasicBlock *, 8> Blocks(FC1.L->block_begin(),
 1529                                         FC1.L->block_end());
 1531       FC0.L->addBlockEntry(BB);
 1532       FC1.L->removeBlockFromLoop(BB);
 1533       if (LI.getLoopFor(BB) != FC1.L)
 1535       LI.changeLoopFor(BB, FC0.L);
 1537     while (!FC1.L->empty()) {
 1538       const auto &ChildLoopIt = FC1.L->begin();
 1540       FC1.L->removeChildLoop(ChildLoopIt);
 1541       FC0.L->addChildLoop(ChildLoop);
 1545     LI.erase(FC1.L);
 1557     return FC0.L;