Lines Matching refs:Loop
334 // loop
361 // Find the inner blocks in this loop. Proceed backwards from the entries
388 LoopShape *Loop = new LoopShape();
389 Notice(Loop);
391 // Solipsize the loop, replacing with break/continue and marking branches
393 // A. Branches to the loop entries become a continue to this shape
395 Solipsize(iter, Branch::Continue, Loop, InnerBlocks);
396 // B. Branches to outside the loop (a next entry) become breaks on this
399 Solipsize(iter, Branch::Break, Loop, InnerBlocks);
402 Loop->Inner = Inner;
403 return Loop;
618 // One entry, looping ==> Loop
635 // Note that it might be reachable by itself - a loop. But that is
636 // fine, we will create a loop inside the multiple block (which
664 // one-time loop, which makes the unnesting pointless.
710 // No independent groups, must be loopable ==> Loop
743 std::function<void (LoopShape*)> loop) {
754 loop(cast<LoopShape>(var));
770 }, [&](LoopShape* Loop) {
771 FollowNaturalFlow(Loop->Inner, Out);
788 }, [&](LoopShape* Loop){
789 FindNaturals(Loop->Inner, Loop->Inner);
810 nullptr; // a switch clears out the loop (TODO: only for
894 }, [&](LoopShape* Loop)
896 RemoveUnneededFlows(Loop->Inner, Loop->Inner, Loop, Depth + 1);
897 Next = Loop->Next;
914 // If we are fusing a Multiple with a loop into this Simple, then
939 LoopShape *Loop = cast<LoopShape>(Details->Ancestor);
940 Loop->Labeled = true;
967 , [&](LoopShape* Loop) {
968 LoopStack.push(Loop);
969 FindLabeledLoops(Loop->Inner);