Home | History | Annotate | Download | only in compiler

Lines Matching defs:loop

18 #include "src/compiler/loop-analysis.h"
56 LoopTree::Loop* osr_loop, Node* osr_normal_entry,
63 // Make a copy of the graph for each outer loop.
65 for (LoopTree::Loop* loop = osr_loop->parent(); loop; loop = loop->parent()) {
71 loop->depth(), loop_tree->HeaderNode(loop)->id(),
72 loop_tree->HeaderNode(loop)->op()->mnemonic());
74 // Prepare the mapping for OSR values and the OSR loop entry.
79 for (LoopTree::Loop* outer = loop->parent(); outer;
128 // Construct the entry into this loop from previous copies.
130 // Gather the live loop header nodes, {loop_header} first.
131 Node* loop_header = loop_tree->HeaderNode(loop);
133 header_nodes.reserve(loop->HeaderSize());
134 header_nodes.push_back(loop_header); // put the loop header first.
135 for (Node* node : loop_tree->HeaderNodes(loop)) {
141 // Gather backedges from the previous copies of the inner loops of {loop}.
189 // merging the backedges to create the entry into the loop header.
201 // Create the merge for the entry into the loop header.
206 // Create a phi that merges values at entry into the loop header.
234 TRACE("Killing outer loop headers...\n");
235 for (LoopTree::Loop* outer = osr_loop->parent(); outer;
260 void SetTypeForOsrValue(Node* osr_value, Node* loop,
280 if (NodeProperties::GetControlInput(use) != loop) continue;
306 osr_loop_entry = node; // found the OSR loop entry
313 CHECK_NOT_NULL(osr_loop_entry); // Should have found the OSR loop entry.
317 CHECK(!osr_loop); // should be only one OSR loop.
318 osr_loop = use; // found the OSR loop.
322 CHECK(osr_loop); // Should have found the OSR loop.
330 // Analyze the graph to determine how deeply nested the OSR loop is.
334 LoopTree::Loop* loop = loop_tree->ContainingLoop(osr_loop);
335 if (loop->depth() > 0) {
336 PeelOuterLoopsForOsr(graph, common, tmp_zone, dead, loop_tree, loop,
340 // Replace the normal entry with {Dead} and the loop entry with {Start}