Lines Matching refs:loops

13 GCC provides extensive infrastructure for work with natural loops, i.e.,
15 chapter describes representation of loops in GCC, both on GIMPLE and in
20 * Loop representation:: Representation and analysis of loops.
21 * Loop querying:: Getting information about loops.
35 This chapter describes the representation of loops in GCC, and functions
43 passes to allow attaching meta information to individual loops
48 the loop. Loops with several latches may appear if several loops share
50 The representation of loops in GCC however allows only loops with a
51 single latch. During loop analysis, headers of such loops are split and
54 variables in the loops is used to determine whether the latches
55 correspond to sub-loops or to control flow in a single loop. This means
61 correctly for loops with multiple latch edges (the functions that only
62 query membership of blocks to loops and subloop relationships, or
67 loops are organized in a containment hierarchy (tree) such that all the
68 loops immediately contained inside loop L are the children of L in the
69 tree. This tree is represented by the @code{struct loops} structure.
71 function. Each of the loops is represented in a @code{struct loop}
74 the corresponding field of the @code{larray} vector in the loops
77 loops. Also, there is no guarantee on the relative order of a loop
82 the given index. @code{number_of_loops} function returns number of loops
83 in the function. To traverse all loops, use a range-based for loop with
86 direction of traversal and the set of loops visited. Each loop is
88 loop tree, and the loops may be removed during the traversal. The newly
89 created loops are never traversed, if they need to be visited, this must
94 one @code{struct loops} structure initialized at the same time for each
96 @code{struct loops} structure. Many of the loop manipulation functions
99 The loops are analyzed through @code{loop_optimizer_init} function. The
107 loops with multiple latch edges will not be disambiguated. If a loop
109 the loop manipulation functions will not work for loops in this shape.
120 sub-loops, and makes manipulation with the loops significantly easier.
121 Most of the loop manipulation functions assume that the loops are in
125 edges in the strongly connected components that are not natural loops
128 flag is not set for blocks and edges that belong to natural loops that
143 The memory occupied by the loops structures should be freed with
152 used to cleanup CFG while updating the loops structures if
163 The functions to query the information about loops are declared in
173 the basic blocks of the sub-loops).
175 sub-loop, and the sibling of the loop in the loops tree.
185 @item @code{loop_depth}: The depth of the loop in the loops tree, i.e., the
186 number of super-loops of the loop.
187 @item @code{flow_loops_dump}: Dumps the information about loops to a
192 @item @code{loop_preheader_edge}: If loops have preheaders, returns
197 to a loop (including its sub-loops).
198 @item @code{find_common_loop}: Finds the common super-loop of two loops.
205 @item @code{mark_loop_exit_edges}: Marks all exit edges of all loops
224 The loops tree can be manipulated using the following functions:
230 @item @code{remove_bb_from_loops}: Removes a basic block from loops.
233 Most low-level CFG functions update loops automatically. The following
245 loops, they are mostly untested in that case, and at the moment, they
246 are only reliable for the innermost loops:
279 created at the exits of the loops for the SSA names that are used
329 Given an SSA name, its behavior in loops can be analyzed using the
336 only for some analysis, and when you work with whole nest of loops at
337 once. It will try replacing all SSA names by their SCEV in all loops,
338 including the super-loops of the current loop, thus providing a complete
344 their evolution in the outer loops is known.
385 several loops) is finished, @code{iv_analysis_done} should be called.
471 @code{number_of_latch_executions} works only for single-exit loops.
499 indicating that loops' latch must roll thus @code{may_be_zero} would be
616 @item an array of loops @code{loop_nest} that contains the loops to