Lines Matching defs:loop
50 // Implement the classic dominator-based natural loop finder. The first
52 // Then B is a loop header and A is a backward branching block. We will
53 // then accumulate, for each loop header, multiple backward branching
55 // blocks to their loop headers, which gives us all of the blocks in the
56 // loop body.
88 NaturalLoop loop(successor, m_loops.size());
89 loop.addBlock(block);
90 m_loops.append(loop);
102 NaturalLoop& loop = m_loops[i];
108 dataLog("Dealing with loop ", loop, "\n");
110 for (unsigned j = loop.size(); j--;) {
111 seenBlocks.set(loop[j]->index);
112 blockWorklist.append(loop[j]);
121 if (block == loop.header())
129 loop.addBlock(predecessor);
145 NaturalLoop& loop = m_loops[loopIndex];
147 for (unsigned blockIndexInLoop = loop.size(); blockIndexInLoop--;) {
148 BasicBlock* block = loop[blockIndexInLoop];
152 if (thisIndex == UINT_MAX || loop.size() < m_loops[thisIndex].size()) {
162 // Now each block knows its inner-most loop and its next-to-inner-most loop. Use
163 // this to figure out loop parenting.
165 NaturalLoop& loop = m_loops[i];
166 RELEASE_ASSERT(loop.header()->innerMostLoopIndices[0] == i);
168 loop.m_outerLoopIndex = loop.header()->innerMostLoopIndices[1];
202 for (const NaturalLoop* loop = innerMostLoopOf(block); loop; loop = innerMostOuterLoop(*loop))
203 result.append(loop);