GCC Middle and Back End API Reference
loop Class 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
 
class loopinner
 
class loopnext
 
void * aux
 
tree nb_iterations
 
bound_wide_int nb_iterations_upper_bound
 
bound_wide_int nb_iterations_likely_upper_bound
 
bound_wide_int nb_iterations_estimate
 
int safelen
 
int simdlen
 
unsigned constraints
 
enum loop_estimation estimate_state: 8
 
unsigned any_upper_bound: 1
 
unsigned any_estimate: 1
 
unsigned any_likely_upper_bound: 1
 
unsigned can_be_parallel: 1
 
unsigned warned_aggressive_loop_optimizations: 1
 
unsigned dont_vectorize: 1
 
unsigned force_vectorize: 1
 
unsigned in_oacc_kernels_region: 1
 
unsigned finite_p: 1
 
unsigned short unroll
 
unsigned short owned_clique
 
tree simduid
 
int orig_loop_num
 
class nb_iter_boundbounds
 
struct control_ivcontrol_ivs
 
struct loop_exitexits
 
class niter_descsimple_loop_desc
 
basic_block former_header
 

Detailed Description

Structure to hold information for each natural loop.   

Field Documentation

◆ any_estimate

◆ any_likely_upper_bound

◆ any_upper_bound

◆ aux

◆ av_ninsns

◆ bounds

◆ can_be_parallel

◆ constraints

◆ control_ivs

◆ dont_vectorize

◆ estimate_state

◆ exits

◆ finite_p

◆ force_vectorize

◆ former_header

basic_block loop::former_header

◆ header

basic_block loop::header

Referenced by _loop_vec_info::_loop_vec_info(), add_header_seq(), add_loop(), add_to_predicate_list(), analyze_and_compute_bitop_with_inv_effect(), analyze_and_compute_bitwise_induction_effect(), loop_cand::analyze_carried_vars(), analyze_function_body(), average_num_loop_insns(), bb_loop_header_p(), bound_difference(), branch_prob(), bypass_block(), calculate_loop_reg_pressure(), loop_cand::can_interchange_p(), canonicalize_loop_ivs(), chain_of_csts_start(), change_loop(), cleanup_tree_cfg_noloop(), combine_blocks(), ipa_icf_gimple::func_checker::compare_loops(), compute_alignments(), compute_live_loop_exits(), connect_loop_phis(), constant_after_peeling(), copy_bbs(), copy_loops(), create_empty_loop_on_edge(), create_iv(), create_loop_tree_node_allocnos(), create_loop_tree_nodes(), create_parallel_loop(), create_preheader(), decide_unrolling(), delete_basic_block(), determine_bb_domination_status(), determine_set_costs(), determine_value_range(), disambiguate_multiple_latches(), discover_iteration_bound_by_body_walk(), do_rpo_vn_1(), draw_cfg_nodes_for_loop(), dump_gimple_bb_header(), duplicate_block(), duplicate_loop_body_to_header_edge(), back_jt_path_registry::duplicate_thread_path(), dw2_build_landing_pads(), easy_exit_values(), eliminate_dom_walker::eliminate_stmt(), eliminate_tail_call(), eliminate_temp_copies(), estimate_loops_at_level(), evaluate_bbs(), expand_gimple_cond(), expand_oacc_for(), expand_omp_atomic_pipeline(), expand_omp_for_generic(), expand_omp_for_ordered_loops(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_simd(), expand_omp_taskloop_for_inner(), expected_loop_iterations_by_profile(), fill_always_executed_in_1(), find_bivs(), find_control_dep_blocks(), find_loop_guard(), find_loop_location(), find_or_create_guard_phi(), find_single_drs(), find_subloop_latch_edge_by_ivs(), find_vdef_in_loop(), fix_bb_placements(), fix_loop_structure(), flow_loop_dump(), flow_loop_nodes_find(), flow_loops_find(), force_nonfallthru(), force_single_succ_latches(), form_subloop(), forwarder_block_p(), fuse_loops(), gather_scalar_reductions(), gen_parallel_loop(), get_loop_body(), get_loop_body_in_bfs_order(), get_loop_body_in_dom_order(), get_loop_body_in_if_conv_order(), get_loop_body_with_size(), get_loop_hot_path(), get_loop_latch_edges(), get_loop_location(), get_minimal_bb(), get_range_query(), get_vop_from_header(), gimple_duplicate_seme_region(), gimple_duplicate_sese_tail(), glb_enum_p(), if_convertible_loop_p(), if_convertible_phi_p(), ifcvt_hoist_invariants(), ifcvt_local_dce(), in_loop_p(), init_loops_structure(), initialize_root_vars(), initialize_root_vars_lm(), initialize_root_vars_store_elim_2(), inner_loop_header_p(), input_cfg(), instantiate_scev_name(), ira_loop_edge_freq(), is_cond_scalar_reduction(), is_feasible_trace(), is_maybe_undefined(), loop_compare_func(), loop_count_in(), loop_edge_to_cancel(), loop_exit_at_end_p(), loop_in_sese_p(), loop_inverted_rev_post_order_compute(), loop_latch_edge(), loop_phi_node_p(), loop_preheader_edge(), loop_version(), make_forwarder_block(), make_forwarders_with_degenerate_phis(), mark_all_loops_for_removal(), mark_bivs(), mark_loop_for_removal(), mark_loops_for_removal(), mark_loops_in_oacc_kernels_region(), maybe_lower_iteration_bound(), merge_latch_edges(), merge_loop_tree(), tree_loop_interchange::move_code_to_inner_loop(), move_sese_region_to_fn(), number_of_iterations_cltz(), number_of_iterations_cltz_complement(), number_of_iterations_popcount(), optimize_loop_for_size_p(), optimize_loop_for_speed_p(), output_cfg(), parallelize_loops(), phi_rank(), predicate_all_scalar_phis(), predicate_bbs(), predict_loops(), print_loop(), print_loop_title(), process_bb(), remove_bb(), remove_edge_and_dominated_blocks(), remove_forwarder_block_with_phi(), rename_variables_in_bb(), report_unroll(), scale_loop_profile(), scale_profile_for_vect_loop(), should_duplicate_loop_header_p(), simd_clone_adjust(), simplify_using_initial_conditions(), sjlj_emit_dispatch_table(), slpeel_tree_duplicate_loop_to_edge_cfg(), slpeel_update_phi_nodes_for_guard1(), sm_seq_valid_bb(), sort_sibling_loops_cmp(), split_edge(), stmt_semi_invariant_p_1(), tail_duplicate(), fwd_jt_path_registry::thread_block_1(), fwd_jt_path_registry::thread_through_loop_header(), transform_to_exit_first_loop(), transform_to_exit_first_loop_alt(), tree_forwarder_block_p(), tree_transform_and_unroll_loop(), tree_unroll_loops_completely_1(), try_create_reduction_list(), try_unroll_loop_completely(), try_vectorize_loop_1(), loop_cand::undo_simple_reduction(), unroll_jam_possible_p(), fwd_jt_path_registry::update_cfg(), vect_analyze_early_break_dependences(), vect_analyze_loop_form(), vect_analyze_scalar_cycles_1(), vect_build_slp_instance(), vect_build_slp_tree_2(), vect_can_advance_ivs_p(), vect_create_epilog_for_reduction(), vect_loop_dist_alias_call(), vect_loop_versioning(), vect_set_loop_control(), vect_setup_realignment(), vect_slp_function(), vect_transform_cycle_phi(), vect_transform_loop(), vect_update_ivs_after_vectorizer(), vectorizable_induction(), vectorizable_load(), vectorizable_nonlinear_induction(), vectorizable_reduction(), vectorizable_simd_clone_call(), verify_loop_structure(), versionable_outer_loop_p(), vn_phi_eq(), vn_phi_insert(), and vn_phi_lookup().

◆ in_oacc_kernels_region

◆ inner

class loop* loop::inner

Referenced by adjust_unroll_factor(), loop_cand::can_interchange_p(), cancel_loop(), cancel_loop_tree(), compute_access_stride(), compute_alignments(), copy_loops(), copy_loops_to(), decide_unrolling(), determine_loop_nest_reuse(), loop_distribution::distribute_loop(), do_not_sink(), do_store_motion(), draw_cfg_nodes_for_loop(), duplicate_loop_body_to_header_edge(), duplicate_subloops(), establish_preds(), estimate_loops_at_level(), loop_distribution::execute(), expand_omp_for_static_chunk(), fill_always_executed_in(), fill_always_executed_in_1(), fill_coldest_and_hotter_out_loop(), loop_distribution::finalize_partitions(), find_loop_guard(), find_loop_nest(), find_loop_nest_1(), fix_loop_structure(), fixup_loop_arrays_after_move(), flow_loop_tree_node_add(), flow_loop_tree_node_remove(), gather_memory_references_ref(), gather_scalar_reductions(), gen_parallel_loop(), get_coldest_out_loop(), get_group_load_store_type(), get_loop_level(), gimple_duplicate_sese_tail(), if_convertible_loop_p(), ifcvt_split_critical_edges(), init_loop_unswitch_info(), vec_info::insert_seq_on_entry(), tree_loop_interchange::interchange(), loop_invariant_motion_in_fun(), loop_parallel_p(), loops_list::loops_list(), mark_loops_in_oacc_kernels_region(), may_use_storent_in_loop_p(), nested_in_vect_loop_p(), oacc_loop_auto_partitions(), oacc_loop_fixed_partitions(), oacc_xform_loop(), optimize_loop_nest_for_size_p(), optimize_loop_nest_for_speed_p(), parallelize_loops(), parloops_is_simple_reduction(), phi_rank(), prepare_perfect_loop_nest(), print_loop(), ref_indep_loop_p(), rename_variables_in_bb(), runtime_alias_check_p(), set_uid_loop_bbs(), slpeel_tree_duplicate_loop_to_edge_cfg(), sort_sibling_loops(), stmt_in_inner_loop_p(), store_motion_loop(), tree_if_conversion(), tree_loop_unroll_and_jam(), tree_ssa_unswitch_loops(), tree_unroll_loops_completely_1(), tree_unswitch_outer_loop(), tree_unswitch_single_loop(), try_peel_loop(), try_unroll_loop_completely(), try_vectorize_loop_1(), unloop(), unroll_jam_possible_p(), vect_analyze_data_ref_dependence(), vect_analyze_loop(), vect_analyze_loop_form(), vect_analyze_scalar_cycles(), vect_build_slp_tree_2(), vect_compute_single_scalar_iteration_cost(), vect_create_epilog_for_reduction(), vect_create_loop_vinfo(), vect_enhance_data_refs_alignment(), vect_is_simple_reduction(), vect_loop_versioning(), vect_setup_realignment(), vect_stmt_relevant_p(), vect_transform_cycle_phi(), vect_transform_loop(), vect_transform_reduction(), vectorizable_induction(), vectorizable_reduction(), version_loop_for_if_conversion(), versionable_outer_loop_p(), and loops_list::walk_loop_tree().

◆ latch

basic_block loop::latch

Referenced by add_to_dst_predicate_list(), add_to_predicate_list(), analyze_insns_in_loop(), bb_loop_header_p(), jt_path_registry::cancel_invalid_paths(), canonicalize_loop_ivs(), check_simple_exit(), cleanup_empty_eh_merge_phis(), combine_blocks(), ipa_icf_gimple::func_checker::compare_loops(), compute_always_reached(), copy_bbs(), copy_loops(), create_call_for_reduction(), create_empty_loop_on_edge(), create_loop_tree_node_allocnos(), create_loop_tree_nodes(), create_parallel_loop(), create_phi_for_local_result(), create_preheader(), delete_basic_block(), determine_bb_domination_status(), disambiguate_loops_with_multiple_latches(), do_not_sink(), do_warn_aggressive_loop_optimizations(), do_while_loop_p(), doloop_optimize(), draw_cfg_nodes_for_loop(), duplicate_loop_body_to_header_edge(), easy_exit_values(), expand_gimple_cond(), expand_oacc_for(), expand_omp_atomic_pipeline(), expand_omp_for_generic(), expand_omp_for_ordered_loops(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_simd(), expand_omp_taskloop_for_inner(), fill_always_executed_in_1(), fill_sons_in_loop(), find_doloop_use(), find_if_case_2(), find_loop_guard(), find_obviously_necessary_stmts(), find_single_drs(), find_subloop_latch_edge(), find_subloop_latch_edge_by_ivs(), fix_loop_bb_probability(), flow_loop_dump(), flow_loops_find(), force_nonfallthru(), force_single_succ_latches(), form_subloop(), fuse_loops(), get_cond_invariant_branch(), get_loop_body(), get_loop_body_in_bfs_order(), get_loop_body_in_dom_order(), get_loop_body_in_if_conv_order(), get_loop_exit_edges(), get_loop_exit_edges_unique_dests(), get_loop_location(), gimple_duplicate_seme_region(), gimple_duplicate_sese_tail(), idx_infer_loop_bounds(), if_convertible_bb_p(), if_convertible_loop_p_1(), ifcvt_split_critical_edges(), infer_loop_bounds_from_undefined(), init_loops_structure(), interpret_rhs_expr(), ip_end_pos(), ip_normal_pos(), ira_loop_edge_freq(), just_once_each_iteration_p(), last_always_executed_block(), latch_dominating_def(), loop_count_in(), loop_edge_to_cancel(), loop_exit_at_end_p(), loop_in_sese_p(), loop_latch_edge(), loop_preheader_edge(), loop_version(), make_forwarder_block(), mark_loop_for_removal(), may_eliminate_iv(), merge_blocks_move(), merge_latch_edges(), tree_loop_interchange::move_code_to_inner_loop(), num_loop_branches(), number_of_iterations_exit_assumptions(), phi_rank(), back_threader_profitability::possibly_profitable_path_p(), predicate_bbs(), print_loop(), back_threader_profitability::profitable_path_p(), record_estimate(), record_nonwrapping_iv(), remove_bb(), remove_conditions_and_labels(), remove_forwarder_block(), remove_forwarder_block_with_phi(), remove_path(), scale_profile_for_vect_loop(), scev_var_range_cant_overflow(), simd_clone_adjust(), slpeel_can_duplicate_loop_p(), slpeel_tree_duplicate_loop_to_edge_cfg(), split_edge(), split_loop(), split_loop_on_cond(), split_paths(), standard_iv_increment_position(), stmt_after_ip_normal_pos(), fwd_jt_path_registry::thread_through_loop_header(), transform_to_exit_first_loop_alt(), tree_transform_and_unroll_loop(), try_transform_to_exit_first_loop_alt(), unloop(), unloop_loops(), unroll_jam_possible_p(), update_loop_exit_probability_scale_dom_bbs(), vec_init_loop_exit_info(), vect_analyze_early_break_dependences(), vect_analyze_loop_form(), vect_phi_first_order_recurrence_p(), verify_loop_structure(), and versionable_outer_loop_p().

◆ lpt_decision

◆ nb_iterations

◆ nb_iterations_estimate

◆ nb_iterations_likely_upper_bound

◆ nb_iterations_upper_bound

◆ next

class loop* loop::next

◆ ninsns

◆ num

int loop::num

Referenced by access_functions_are_affine_or_constant_p(), add_loop_to_tree(), add_other_self_distances(), add_to_conflicts(), scev_dfs::add_to_evolution(), scev_dfs::add_to_evolution_1(), analyze_and_mark_doloop_use(), loop_cand::analyze_carried_vars(), analyze_evolution_in_loop(), loop_cand::analyze_induction_var(), analyze_memory_references(), analyze_miv_subscript(), analyze_overlapping_iterations(), analyze_scalar_evolution(), analyze_scalar_evolution_1(), analyze_scalar_evolution_in_loop(), any_access_function_variant_p(), bitfields_to_lower_p(), build_classic_dist_vector(), calculate_loop_reg_pressure(), can_sm_ref_p(), canonicalize_loop_induction_variables(), chrec_convert_1(), chrec_convert_aggressive(), compute_alignments(), compute_invariantness(), compute_overall_effect_of_inner_loop(), create_canonical_iv(), create_intersect_range_checks_index(), create_loop_tree_nodes(), create_preheader(), decide_unrolling(), delete_loop(), disambiguate_multiple_latches(), loop_distribution::distribute_loop(), do_rpo_vn_1(), do_while_loop_p(), doloop_optimize(), dr_analyze_innermost(), draw_cfg_nodes_for_loop(), dump_data_dependence_relation(), dump_gimple_bb_header(), dump_induction(), eliminate_dom_walker::eliminate_stmt(), estimate_numbers_of_iterations(), loop_distribution::execute(), execute_sm(), execute_sm_exit(), expected_loop_iterations_by_profile(), fill_always_executed_in_1(), fill_coldest_and_hotter_out_loop(), final_value_replacement_loop(), find_defs(), find_invariants_bb(), find_loop_guard(), find_obviously_necessary_stmts(), find_ref_loc_in_loop_cmp(), find_refs_for_sm(), find_seed_stmts_for_distribution(), find_simple_exit(), finite_function_p(), finite_loop_p(), fix_loop_structure(), fixup_loop_arrays_after_move(), flow_loop_dump(), flow_loops_find(), form_loop_tree(), gather_mem_refs_stmt(), gen_parallel_loop(), generate_loops_for_partition(), get_coldest_out_loop(), get_group_load_store_type(), get_loop(), get_loop_copy(), get_scev_info(), hoist_memory_references(), idx_infer_loop_bounds(), idx_within_array_bound(), ifcvt_split_critical_edges(), index_in_loop_nest(), infer_loop_bounds_from_pointer_arith(), infer_loop_bounds_from_signedness(), init_loop_unswitch_info(), instantiate_scev(), tree_loop_interchange::interchange(), ira_allocate_conflict_vec(), ira_allocate_object_conflicts(), ira_conflict_vector_profitable_p(), loop_niter_by_eval(), loop_parallel_p(), loops_list::loops_list(), mark_irreducible_loops(), maybe_flat_loop_profile(), merge_latch_edges(), move_computations_worker(), number_of_iterations_cond(), object_address_invariant_in_loop_p(), outermost_indep_loop(), parallelize_loops(), place_new_loop(), predict_loops(), prepare_perfect_loop_nest(), print_loop(), print_loop_info(), query_loop_dependence(), record_estimate(), record_loop_dependence(), record_nonwrapping_iv(), ref_indep_loop_p(), same_succ_hash(), scale_dominated_blocks_in_loop(), scale_loop_profile(), scale_strictly_dominated_blocks(), scev_analyzable_p(), set_loop_copy(), set_ref_loaded_in_loop(), set_ref_stored_in_loop(), should_duplicate_loop_header_p(), simple_iv_with_niters(), simplify_loop_version(), simplify_peeled_chrec(), sort_bbs_in_loop_postorder_cmp(), sort_conflict_id_map(), sort_locs_in_loop_postorder_cmp(), loop_distribution::transform_reduction_loop(), tree_estimate_loop_size(), tree_fold_binomial(), tree_ssa_iv_optimize_loop(), tree_ssa_lim_initialize(), tree_ssa_prefetch_arrays(), tree_unroll_loops_completely(), tree_unroll_loops_completely_1(), tree_unswitch_single_loop(), try_peel_loop(), try_unroll_loop_completely(), update_loop_exit_probability_scale_dom_bbs(), vect_analyze_data_ref_dependence(), vect_analyze_scalar_cycles_1(), vect_bb_vectorization_profitable_p(), vect_loop_vectorized_call(), vect_loop_versioning(), vect_prune_runtime_alias_test_list(), vect_slp_function(), vect_transform_reduction(), vectorizable_load(), verify_loop_closed_ssa(), verify_loop_structure(), version_loop_by_alias_check(), version_loop_for_if_conversion(), and loops_list::walk_loop_tree().

◆ num_nodes

unsigned loop::num_nodes

Referenced by _loop_vec_info::_loop_vec_info(), add_bb_to_loop(), add_loop(), analyze_function_body(), analyze_insns_in_loop(), average_num_loop_insns(), bitfields_to_lower_p(), build_region(), can_duplicate_loop_p(), loop_cand::can_interchange_p(), cancel_loop(), combine_blocks(), compute_added_num_insns(), compute_always_reached(), destroy_loop(), determine_bb_domination_status(), determine_reduction_stmt_1(), df_analyze_loop(), doloop_valid_p(), draw_cfg_nodes_for_loop(), duplicate_loop_body_to_header_edge(), estimate_loops_at_level(), evaluate_bbs(), fill_always_executed_in_1(), find_data_references_in_loop(), find_exits(), find_givs(), find_invariants_body(), find_loop_guard(), find_seed_stmts_for_distribution(), find_simple_exit(), fix_bb_placements(), fix_loop_bb_probability(), fix_loop_placement(), flow_loop_dump(), flow_loops_find(), free_rdg(), fuse_loops(), gather_memory_references(), generate_loops_for_partition(), get_loop_body(), get_loop_body_in_bfs_order(), get_loop_body_in_custom_order(), get_loop_body_in_custom_order(), get_loop_body_in_dom_order(), get_loop_body_in_if_conv_order(), get_loop_exit_edges(), hoist_guard(), if_convertible_loop_p(), if_convertible_loop_p_1(), ifcvt_split_critical_edges(), infer_loop_bounds_from_undefined(), init_loop_unswitch_info(), init_loops_structure(), init_var_map(), insert_gimplified_predicates(), loop_has_blocks_with_irreducible_flag(), loop_has_phi_with_address_arg(), loop_has_vector_phi_nodes(), loop_inverted_rev_post_order_compute(), loop_nest_has_data_refs(), loop_only_exit_p(), loop_rev_post_order_compute(), loop_version(), merge_loop_tree(), tree_loop_interchange::move_code_to_inner_loop(), move_loop_invariants(), move_sese_region_to_fn(), num_loop_branches(), num_loop_insns(), oacc_entry_exit_ok(), optimize_mask_stores(), predicate_all_scalar_phis(), predicate_bbs(), predicate_statements(), predict_loops(), referenced_in_one_insn_in_loop_p(), remove_bb_from_loops(), remove_conditions_and_labels(), reset_debug_uses_in_loop(), rewrite_all_phi_nodes_with_iv(), scale_loop_frequencies(), set_uid_loop_bbs(), should_unroll_loop_p(), simplify_loop_version(), slpeel_can_duplicate_loop_p(), slpeel_tree_duplicate_loop_to_edge_cfg(), split_loop(), split_loop_on_cond(), loop_distribution::stmts_from_loop(), tree_estimate_loop_size(), tree_if_conversion(), tree_num_loop_insns(), tree_ssa_iv_optimize_loop(), tree_unswitch_single_loop(), unloop(), unroll_loop_runtime_iterations(), update_dominators_in_loop(), update_epilogue_loop_vinfo(), vect_analyze_loop_form(), vect_analyze_loop_operations(), vect_compute_single_scalar_iteration_cost(), vect_determine_vectorization_factor(), vect_do_peeling(), vect_get_datarefs_in_loop(), vect_mark_stmts_to_be_vectorized(), vect_transform_loop(), vect_update_vf_for_slp(), verify_loop_closed_ssa(), verify_loop_structure(), and version_loop_for_if_conversion().

◆ orig_loop_num

◆ owned_clique

◆ safelen

◆ simdlen

◆ simduid

◆ simple_loop_desc

class niter_desc* loop::simple_loop_desc

◆ superloops

◆ unroll

◆ warned_aggressive_loop_optimizations

unsigned loop::warned_aggressive_loop_optimizations

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