GCC Middle and Back End API Reference
loop Struct Reference

#include <cfgloop.h>

Collaboration diagram for loop:

Data Fields

int num
unsigned ninsns
basic_block header
basic_block latch
struct lpt_decision lpt_decision
unsigned av_ninsns
unsigned num_nodes
vec< loop_p, va_gc > * superloops
struct loopinner
struct loopnext
PTR aux
tree nb_iterations
double_int nb_iterations_upper_bound
double_int nb_iterations_estimate
bool any_upper_bound
bool any_estimate
bool can_be_parallel
bool warned_aggressive_loop_optimizations
enum loop_estimation estimate_state
int safelen
bool force_vect
tree simduid
struct nb_iter_boundbounds
struct loop_exitexits
struct niter_descsimple_loop_desc

Detailed Description

Structure to hold information for each natural loop.


Field Documentation

bool loop::any_estimate
bool loop::any_upper_bound

Referenced by single_exit().

PTR loop::aux

Auxiliary info specific to a pass.

Referenced by mark_regno_death().

unsigned loop::av_ninsns

Average number of executed insns per iteration.

struct nb_iter_bound* loop::bounds

Upper bound on number of iterations of a loop.

Referenced by n_of_executions_at_most().

bool loop::can_be_parallel

True if the loop can be parallel.

enum loop_estimation loop::estimate_state

An integer estimation of the number of iterations. Estimate_state describes what is the state of the estimation.

Referenced by n_of_executions_at_most().

struct loop_exit* loop::exits

Head of the cyclic list of the exits of the loop.

Referenced by loop_exit_free(), loop_exit_hash(), and record_loop_exits().

bool loop::force_vect

True if we should try harder to vectorize this loop.

struct lpt_decision loop::lpt_decision

For loop unrolling/peeling decision.

Referenced by decide_peel_simple(), loop_exit_at_end_p(), split_edge_and_insert(), and unroll_and_peel_loops().

tree loop::nb_iterations

The number of times the latch of the loop is executed. This can be an INTEGER_CST, or a symbolic expression representing the number of iterations like "N - 1", or a COND_EXPR containing the runtime conditions under which the number of iterations is non zero.

Don't access this field directly: number_of_latch_executions computes and caches the computed information in this field.

Referenced by dump_chrecs_stats(), gather_chrec_stats(), and n_of_executions_at_most().

double_int loop::nb_iterations_estimate

An integer giving an estimate on nb_iterations. Unlike nb_iterations_upper_bound, there is no guarantee that it is at least nb_iterations.

double_int loop::nb_iterations_upper_bound

An integer guaranteed to be greater or equal to nb_iterations. Only valid if any_upper_bound is true.

Referenced by single_exit().

unsigned loop::ninsns

Number of loop insns.

Referenced by loop_exit_at_end_p(), num_loop_insns(), and unloop_loops().

int loop::safelen

If > 0, an integer, where the user asserted that for any I in [ 0, nb_iterations ) and for any J in [ I, min ( I + safelen, nb_iterations ) ), the Ith and Jth iterations of the loop can be safely evaluated concurrently.

tree loop::simduid

For SIMD loops, this is a unique identifier of the loop, referenced by IFN_GOMP_SIMD_VF, IFN_GOMP_SIMD_LANE and IFN_GOMP_SIMD_LAST_LANE builtins.

struct niter_desc* loop::simple_loop_desc

Number of iteration analysis data for RTL.

Referenced by check_simple_exit(), and find_simple_exit().

vec<loop_p, va_gc>* loop::superloops

Superloops of the loop, starting with the outermost loop.

bool loop::warned_aggressive_loop_optimizations

True if -Waggressive-loop-optimizations warned about this loop already.


The documentation for this struct was generated from the following file: