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.
36 This chapter describes the representation of loops in GCC, and functions
40 updated only by the optimization passes that deal with loops, but some
46 the loop. Loops with several latches may appear if several loops share
48 The representation of loops in GCC however allows only loops with a
49 single latch. During loop analysis, headers of such loops are split and
52 the latches correspond to sub-loops or to control flow in a single loop.
59 loops are organized in a containment hierarchy (tree) such that all the
60 loops immediately contained inside loop L are the children of L in the
61 tree. This tree is represented by the @code{struct loops} structure.
63 function. Each of the loops is represented in a @code{struct loop}
66 the corresponding field of the @code{parray} field of the loops
70 loops. The index of a loop never changes. The first unused index is
71 stored in the @code{num} field of the loops structure.
75 one @code{struct loops} structure initialized at the same time for each
77 to contain the @code{struct loops} structure, especially if the loop
81 The loops are analyzed through @code{loop_optimizer_init} function. The
95 sub-loops, and makes manipulation with the loops significantly easier.
96 Most of the loop manipulation functions assume that the loops are in
100 edges in the strongly connected components that are not natural loops
103 flag is not set for blocks and edges that belong to natural loops that
115 The memory occupied by the loops structures should be freed with
121 used to cleanup CFG while updating the loops structures if
128 The functions to query the information about loops are declared in
138 the basic blocks of the sub-loops).
139 @item @code{depth}: The depth of the loop in the loops tree, i.e., the
140 number of super-loops of the loop.
142 sub-loop, and the sibling of the loop in the loops tree.
144 exactly one exit and the loops were analyzed with
155 @item @code{flow_loops_dump}: Dumps the information about loops to a
160 @item @code{loop_preheader_edge}: If loops have preheaders, returns
165 to a loop (including its sub-loops).
166 @item @code{find_common_loop}: Finds the common super-loop of two loops.
173 @item @code{mark_loop_exit_edges}: Marks all exit edges of all loops
189 The loops tree can be manipulated using the following functions:
195 @item @code{remove_bb_from_loops}: Removes a basic block from loops.
209 and sets loops for the new blocks. This function can only be used on
218 loops, they are mostly untested in that case, and at the moment, they
219 are only reliable for the innermost loops:
253 created at the exits of the loops for the SSA names that are used
303 Given an SSA name, its behavior in loops can be analyzed using the
310 only for some analysis, and when you work with whole nest of loops at
311 once. It will try replacing all SSA names by their SCEV in all loops,
312 including the super-loops of the current loop, thus providing a complete
318 their evolution in the outer loops is known.
359 several loops) is finished, @code{iv_analysis_done} should be called.
443 @code{number_of_iterations_in_loop} works only for single-exit loops,
562 @item an array of loops @code{loop_nest} that contains the loops to
578 Lambda is a framework that allows transformations of loops using
603 loops so that they match the transformed loopnest.