Home | History | Annotate | Download | only in Analysis

Lines Matching refs:Subloop

296     // Each block in each subloop should be contained within this loop.
300 "Loop does not contain all the blocks of a subloop!");
306 "Loop is not a subloop of its parent!");
359 /// Discover a subloop with the specified backedges such that: All blocks within
360 /// this loop are mapped to this loop or a subloop. And all subloops within this
361 /// loop have their parent loop set to this loop or a subloop.
377 LoopT *Subloop = LI->getLoopFor(PredBB);
378 if (!Subloop) {
393 while (LoopT *Parent = Subloop->getParentLoop())
394 Subloop = Parent;
396 // If it is already discovered to be a subloop of this loop, continue.
397 if (Subloop == L)
400 // Discover a subloop of this loop.
401 Subloop->setParentLoop(L);
403 NumBlocks += Subloop->getBlocks().capacity();
404 PredBB = Subloop->getHeader();
406 // within this subloop tree itself. Note that a predecessor may directly
407 // reach another subloop that is not yet discovered to be a subloop of
410 if (LI->getLoopFor(Pred) != Subloop)
443 /// subloop header, add the subloop to its parent in PostOrder, then reverse the
444 /// Block and Subloopsubloop to achieve RPO.
447 LoopT *Subloop = LI->getLoopFor(Block);
448 if (Subloop && Block == Subloop->getHeader()) {
449 // We reach this point once per subloop after processing all the blocks in
450 // the subloop.
451 if (Subloop->getParentLoop())
452 Subloop->getParentLoop()->getSubLoopsVector().push_back(Subloop);
454 LI->addTopLevelLoop(Subloop);
458 Subloop->reverseBlock(1);
459 std::reverse(Subloop->getSubLoopsVector().begin(),
460 Subloop->getSubLoopsVector().end());
462 Subloop = Subloop->getParentLoop();
464 for (; Subloop; Subloop = Subloop->getParentLoop())
465 Subloop->addBlockEntry(Block);
469 /// interleaved with backward CFG traversals within each subloop
471 /// this part of the algorithm is linear in the number of CFG edges. Subloop and
505 // Perform a single forward CFG traversal to populate block and subloop