GCC Middle and Back End API Reference
|
#include <cfgloop.h>
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 loop * | inner |
struct loop * | next |
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_bound * | bounds |
struct loop_exit * | exits |
struct niter_desc * | simple_loop_desc |
Structure to hold information for each natural loop.
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.
Referenced by debug_generated_program(), and graphite_create_new_loop_guard().
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.
basic_block loop::header |
Basic block of loop header.
Referenced by adjust_phi_and_debug_stmts(), alloc_loop(), can_copy_bbs_p(), cancel_loop(), copy_loops_to(), create_empty_if_region_on_edge(), create_iv(), create_loop_fn(), create_preheader(), expected_loop_iterations_unbounded(), fill_sons_in_loop(), find_implicit_sets(), find_loop_niter(), find_subloop_latch_edge_by_profile(), generate_prolog_epilog(), get_iv(), get_loop_body(), get_loop_latch_edges(), gimple_split_block(), graphite_create_new_loop_guard(), initialize_cfun(), loop_exit_at_end_p(), move_block_after(), predict_edge(), predicted_by_p(), print_global_statistics(), print_graphite_scop_statistics(), redirection_block_p(), remap_decl_1(), remove_conditions_and_labels(), setup_sched_infos(), thread_single_edge(), and vect_can_advance_ivs_p().
struct loop* loop::inner |
The first inner (child) loop or NULL if innermost loop.
Referenced by add_subscript_strides(), analyze_memory_references(), find_scop_parameters(), get_initial_def_for_reduction(), move_stmt_eh_region_tree_nr(), new_loop_vec_info(), optimize_insn_for_speed_p(), pbb_number_of_iterations_at_time(), ref_indep_loop_p_2(), remap_decl_1(), vect_analyze_loop_1(), and vect_find_same_alignment_drs().
basic_block loop::latch |
Basic block of loop latch.
Referenced by alloc_loop(), can_copy_bbs_p(), copy_loops_to(), create_call_for_reduction_1(), create_empty_if_region_on_edge(), create_preheader(), dump_recorded_exit(), estimated_unrolled_size(), expected_loop_iterations_unbounded(), fill_sons_in_loop(), get_loop_body(), ip_end_pos(), merge_blocks_move_successor_nojumps(), move_block_after(), predict_edge(), record_loop_exits(), redirection_block_p(), ref_indep_loop_p(), remove_conditions_and_labels(), scale_loop_profile(), simplify_using_outer_evolutions(), split_loop_exit_edge(), and thread_single_edge().
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().
struct loop* loop::next |
Link to the next (sibling) loop.
Referenced by add_subscript_strides(), analyze_memory_references(), assign_discriminators(), move_stmt_eh_region_tree_nr(), ref_always_accessed::operator()(), optimize_insn_for_speed_p(), optimize_loop_for_size_p(), pbb_number_of_iterations_at_time(), ref_indep_loop_p_2(), scale_dominated_blocks_in_loop(), and translate_clast_assignment().
unsigned loop::ninsns |
Number of loop insns.
Referenced by loop_exit_at_end_p(), num_loop_insns(), and unloop_loops().
int loop::num |
Index into loops array.
Referenced by add_exit_phis(), add_loop_to_tree(), analyze_function(), analyze_memory_references(), analyze_scalar_evolution(), cancel_loop(), cancel_loop_tree(), compute_overall_effect_of_inner_loop(), compute_scalar_evolution_in_loop(), compute_subscript_distance(), create_canonical_iv(), eq_rename_map_elts(), extract_range_from_comparison(), follow_ssa_edge_binary(), gcd_of_steps_may_divide_p(), get_bb_type(), graphite_create_new_loop(), instantiate_scev_1(), ira_allocate_conflict_vec(), loop_exit_at_end_p(), mark_ref_stored(), move_stmt_eh_region_tree_nr(), record_mem_ref_loc(), ref_indep_loop_p_1(), rewrite_use_compare(), setup_loop_tree_level(), setup_sched_infos(), tree_ssa_unswitch_loops(), update_bad_spill_attribute(), and vect_update_ivs_after_vectorizer().
unsigned loop::num_nodes |
Number of blocks contained within the loop.
Referenced by alloc_loop(), cancel_loop(), clear_iv_info(), copy_loop_info(), dump_recorded_exit(), fill_sons_in_loop(), generate_prolog_epilog(), get_loop_body(), insert_gimplified_predicates(), move_stmt_r(), new_bb_pbb_def(), record_loop_exits(), record_uses(), ref_indep_loop_p(), rewrite_use_compare(), split_edge_and_insert(), thread_single_edge(), tree_unswitch_single_loop(), vect_analyze_loop_1(), vect_create_cond_for_alias_checks(), and vect_pattern_recog_1().
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().
bool loop::warned_aggressive_loop_optimizations |
True if -Waggressive-loop-optimizations warned about this loop already.