Lines Matching refs:loop

42    in the loop body are always executed when the loop is entered.  This
44 for loop preconditioning. */
51 should_duplicate_loop_header_p (basic_block header, struct loop *loop,
58 loop peeling here). */
65 if (flow_bb_inside_loop_p (loop, EDGE_SUCC (header, 0)->dest)
66 && flow_bb_inside_loop_p (loop, EDGE_SUCC (header, 1)->dest))
69 /* If this is not the original loop header, we want it to have just
71 if (header != loop->header && !single_pred_p (header))
98 /* Checks whether LOOP is a do-while style loop. */
101 do_while_loop_p (struct loop *loop)
103 tree stmt = last_stmt (loop->latch);
105 /* If the latch of the loop is not empty, it is not a do-while loop. */
110 /* If the header contains just a condition, it is not a do-while loop. */
111 stmt = last_and_only_stmt (loop->header);
119 /* For all loops, copy the condition at the end of the loop body in front
120 of the loop. This is beneficial since it increases efficiency of
121 code motion optimizations. It also saves one jump on entry to the loop. */
128 struct loop *loop;
153 loop = loops->parray[i];
154 if (!loop)
156 header = loop->header;
158 /* If the loop is already a do-while style one (either because it was
160 we might be in fact peeling the first iteration of the loop. This
162 if (do_while_loop_p (loop))
173 while (should_duplicate_loop_header_p (header, loop, &limit))
175 /* Find a successor of header that is inside a loop; i.e. the new
177 if (flow_bb_inside_loop_p (loop, EDGE_SUCC (header, 0)->dest))
191 "Duplicating header of the loop %d up to edge %d->%d.\n",
192 loop->num, exit->src->index, exit->dest->index);
195 inside the loop. */
199 entry = loop_preheader_edge (loop);
207 /* If the loop has the form "for (i = j; i < j + 10; i++)" then
229 are not now, since there was the loop exit condition. */
230 loop_split_edge_with (loop_preheader_edge (loop), NULL);
231 loop_split_edge_with (loop_latch_edge (loop), NULL);