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 |
PTR loop::aux |
Referenced by calculate_loop_reg_pressure(), destroy_loop_vec_info(), duplicate_loop_to_header_edge(), find_exits(), free_loop_data(), loop_vec_info_for_loop(), move_block_to_fn(), move_sese_region_to_fn(), tree_unroll_loops_completely(), tree_unroll_loops_completely_1(), vect_analyze_loop_form(), and vectorize_loops().
unsigned loop::av_ninsns |
struct nb_iter_bound* loop::bounds |
bool loop::can_be_parallel |
Referenced by alloc_loop(), gloog(), parallelize_loops(), and translate_clast_for_loop().
enum loop_estimation loop::estimate_state |
struct loop_exit* loop::exits |
Referenced by alloc_loop(), collect_condition_stmts(), estimate_function_body_sizes(), find_loop_niter(), fix_loop_placement(), flow_loop_free(), get_all_loop_exits(), get_loop_exit_edges(), get_loop_exit_edges_unique_dests(), gimple_duplicate_sese_tail(), if_region_set_false_region(), move_sese_region_to_fn(), predict_loops(), rescan_loop_exit(), single_exit(), single_likely_exit(), store_motion_loop(), and verify_loop_structure().
bool loop::force_vect |
Referenced by expand_omp_simd(), main_tree_if_conversion(), tree_unroll_loops_completely_1(), and vectorize_loops().
basic_block loop::header |
Referenced by add_loop(), average_num_loop_insns(), bound_difference(), build_sese_loop_nests(), bypass_block(), calculate_loop_reg_pressure(), canon_loop(), canonicalize_loop_ivs(), chain_of_csts_start(), change_loop(), cleanup_empty_eh_merge_phis(), combine_blocks(), compute_alignments(), compute_live_loop_exits(), copy_bbs(), copy_loop_headers(), copy_loops(), create_block_for_bookkeeping(), create_empty_loop_on_edge(), create_iv(), create_loop_tree_node_allocnos(), create_loop_tree_nodes(), create_parallel_loop(), create_preheader(), create_single_entry_edge(), decide_unrolling_and_peeling(), delete_basic_block(), determine_bb_domination_status(), determine_set_costs(), disambiguate_multiple_latches(), discover_iteration_bound_by_body_walk(), do_while_loop_p(), doloop_optimize(), dr_indices_valid_in_loop(), draw_cfg_nodes_for_loop(), duplicate_block(), duplicate_loop_to_header_edge(), dw2_build_landing_pads(), eliminate_temp_copies(), estimate_function_body_sizes(), estimate_loops_at_level(), estimate_numbers_of_iterations_loop(), estimated_loop_iterations(), expand_omp_atomic_pipeline(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_simd(), expected_loop_iterations_unbounded(), fill_always_executed_in_1(), find_bivs(), find_interesting_uses_stmt(), find_loop_location(), find_looparound_phi(), find_subloop_latch_edge_by_ivs(), fix_bb_placements(), fix_loop_structure(), flow_loop_dump(), flow_loop_nodes_find(), flow_loops_find(), force_single_succ_latches(), form_subloop(), forwarder_block_p(), gather_scalar_reductions(), gen_parallel_loop(), get_initial_def_for_induction(), 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(), gimple_duplicate_sese_region(), gimple_duplicate_sese_tail(), glb_enum_p(), if_convertible_bb_p(), if_convertible_gimple_assign_stmt_p(), if_convertible_loop_p(), if_convertible_phi_p(), init_loops_structure(), initialize_root_vars(), initialize_root_vars_lm(), inner_loop_header_p(), input_cfg(), ira_loop_edge_freq(), limit_scops(), loop_canon_p(), loop_compare_func(), loop_edge_to_cancel(), loop_in_sese_p(), loop_latch_edge(), loop_phi_node_p(), loop_preheader_edge(), loop_single_full_bb_p(), loop_version(), loopify(), make_forwarder_block(), mark_all_loops_for_removal(), mark_bivs(), mark_irreducible_loops(), mark_loops_for_removal(), maybe_lower_iteration_bound(), merge_blocks(), merge_latch_edges(), move_sese_region_to_fn(), new_loop_vec_info(), optimize_loop_for_size_p(), optimize_loop_for_speed_p(), output_cfg(), parallelize_loops(), peel_loops_completely(), phi_rank(), predicate_all_scalar_phis(), predicate_bbs(), predict_loops(), print_global_statistics(), print_graphite_scop_statistics(), print_loop(), print_loop_title(), remove_bb(), report_unroll_peel(), scale_loop_profile(), scop_ivs_can_be_represented(), scopdet_basic_block_info(), should_duplicate_loop_header_p(), simplify_using_initial_conditions(), sjlj_emit_dispatch_table(), slpeel_tree_duplicate_loop_to_edge_cfg(), slpeel_tree_peel_loop_to_edge(), slpeel_update_phi_nodes_for_guard1(), sms_schedule(), split_edge(), suitable_component_p(), tail_duplicate(), thread_block(), thread_through_all_blocks(), thread_through_loop_header(), transform_to_exit_first_loop(), translate_clast_for_loop(), tree_forwarder_block_p(), tree_transform_and_unroll_loop(), try_create_reduction_list(), try_unroll_loop_completely(), unswitch_loop(), vect_analyze_loop_form(), vect_analyze_scalar_cycles_1(), vect_can_advance_ivs_p(), vect_setup_realignment(), vect_transform_loop(), vect_update_ivs_after_vectorizer(), vectorizable_reduction(), verify_loop_structure(), and vrp_visit_phi_node().
struct loop* loop::inner |
Referenced by build_loop_iteration_domains(), cancel_loop(), cancel_loop_tree(), compute_alignments(), copy_loops(), decide_peel_completely(), decide_unrolling_and_peeling(), determine_loop_nest_reuse(), draw_cfg_nodes_for_loop(), duplicate_loop_to_header_edge(), duplicate_subloops(), establish_preds(), estimate_loops_at_level(), fill_always_executed_in(), fill_always_executed_in_1(), 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(), for_all_locs_in_loop(), gather_memory_references_ref(), gen_parallel_loop(), get_initial_def_for_induction(), get_loop_level(), gimple_duplicate_sese_tail(), if_convertible_loop_p(), loop_canon_p(), loop_parallel_p(), loop_to_lst(), may_use_storent_in_loop_p(), nested_in_vect_loop_p(), new_loop_vec_info(), optimize_loop_nest_for_speed_p(), outermost_loop_in_sese_1(), parallelize_loops(), phi_rank(), print_loop(), ref_indep_loop_p_2(), simplify_truncation(), simplify_unary_operation_1(), slpeel_can_duplicate_loop_p(), stmt_in_inner_loop_p(), store_motion(), store_motion_loop(), tree_unroll_loops_completely_1(), tree_unswitch_loop(), try_unroll_loop_completely(), unloop(), unswitch_loop(), unswitch_single_loop(), vect_analyze_group_access(), vect_analyze_loop_form(), vect_analyze_scalar_cycles(), vect_create_epilog_for_reduction(), vect_enhance_data_refs_alignment(), vect_get_single_scalar_iteration_cost(), vect_init_vector_1(), vect_is_simple_reduction_1(), vect_mark_for_runtime_alias_test(), vect_setup_realignment(), vect_transform_loop(), vect_transform_stmt(), vectorizable_induction(), and vectorizable_reduction().
basic_block loop::latch |
Referenced by add_autoinc_candidates(), analyze_insns_in_loop(), bb_loop_header_p(), build_sese_loop_nests(), canon_loop(), canonicalize_loop_ivs(), cfg_layout_can_merge_blocks_p(), check_simple_exit(), cleanup_empty_eh_merge_phis(), combine_blocks(), compute_always_reached(), copy_bbs(), copy_loops(), create_block_for_bookkeeping(), 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_warn_aggressive_loop_optimizations(), do_while_loop_p(), doloop_optimize(), draw_cfg_nodes_for_loop(), duplicate_block(), duplicate_loop_to_header_edge(), expand_omp_atomic_pipeline(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_simd(), expected_loop_iterations_unbounded(), fill_always_executed_in_1(), fill_sons_in_loop(), find_if_case_2(), find_obviously_necessary_stmts(), find_same_succ_bb(), find_subloop_latch_edge(), find_subloop_latch_edge_by_ivs(), flow_loop_dump(), flow_loops_find(), force_single_succ_latches(), form_subloop(), generate_memcpy_builtin(), generate_memset_builtin(), 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_can_merge_blocks_p(), gimple_duplicate_sese_region(), gimple_duplicate_sese_tail(), idx_infer_loop_bounds(), if_convertible_bb_p(), infer_loop_bounds_from_undefined(), init_loops_structure(), ip_end_pos(), ip_normal_pos(), ira_loop_edge_freq(), just_once_each_iteration_p(), last_always_executed_block(), latch_dominating_def(), loop_edge_to_cancel(), loop_exit_at_end_p(), loop_in_sese_p(), loop_latch_edge(), loop_preheader_edge(), loop_version(), loopify(), make_forwarder_block(), mark_irreducible_loops(), may_eliminate_iv(), merge_blocks(), merge_blocks_move(), merge_latch_edges(), num_loop_branches(), number_of_iterations_exit(), phi_rank(), predicate_bbs(), predict_loops(), print_loop(), record_estimate(), remove_bb(), remove_conditions_and_labels(), remove_path(), rewrite_phi_out_of_ssa(), rtl_can_merge_blocks(), scale_loop_profile(), sjlj_emit_dispatch_table(), slpeel_can_duplicate_loop_p(), slpeel_tree_peel_loop_to_edge(), slpeel_update_phi_nodes_for_guard1(), split_block(), split_edge(), standard_iv_increment_position(), statement_sink_location(), stmt_after_ip_normal_pos(), thread_block(), thread_through_loop_header(), tree_transform_and_unroll_loop(), unloop(), unloop_loops(), unswitch_loop(), vect_analyze_loop_form(), and verify_loop_structure().
struct lpt_decision loop::lpt_decision |
Referenced by decide_peel_completely(), decide_peel_once_rolling(), decide_peel_simple(), decide_unroll_constant_iterations(), decide_unroll_runtime_iterations(), decide_unroll_stupid(), decide_unrolling_and_peeling(), peel_loop_simple(), peel_loops_completely(), report_unroll_peel(), unroll_and_peel_loops(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), and unroll_loop_stupid().
tree loop::nb_iterations |
Referenced by do_warn_aggressive_loop_optimizations(), estimate_numbers_of_iterations_loop(), free_numbers_of_iterations_estimates_loop(), number_of_latch_executions(), print_loop(), record_estimate(), scev_initialize(), scev_reset(), slpeel_make_loop_iterate_ntimes(), and substitute_in_loop_info().
double_int loop::nb_iterations_estimate |
double_int loop::nb_iterations_upper_bound |
Referenced by copy_loop_info(), discover_iteration_bound_by_body_walk(), estimate_numbers_of_iterations_loop(), input_cfg(), max_loop_iterations(), maybe_lower_iteration_bound(), output_cfg(), print_loop(), record_niter_bound(), remove_redundant_iv_tests(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), and vect_transform_loop().
struct loop* loop::next |
Referenced by build_loop_iteration_domains(), copy_loops(), determine_loop_nest_reuse(), draw_cfg_nodes_for_loop(), duplicate_loop_to_header_edge(), duplicate_subloops(), establish_preds(), estimate_loops_at_level(), fill_always_executed_in(), fill_always_executed_in_1(), find_loop_nest_1(), fixup_loop_arrays_after_move(), flow_loop_tree_node_add(), flow_loop_tree_node_remove(), for_all_locs_in_loop(), get_loop_level(), gimple_duplicate_sese_tail(), ira_create_live_range(), loop_to_lst(), optimize_loop_nest_for_speed_p(), outermost_loop_in_sese_1(), print_loop_and_siblings(), ref_indep_loop_p_2(), store_motion(), store_motion_loop(), translate_clast(), tree_transform_and_unroll_loop(), tree_unroll_loops_completely_1(), vect_analyze_group_access(), vect_pattern_recog_1(), and vect_remove_stores().
unsigned loop::ninsns |
Referenced by average_num_loop_insns(), decide_peel_completely(), decide_peel_once_rolling(), decide_peel_simple(), decide_unroll_constant_iterations(), decide_unroll_runtime_iterations(), decide_unroll_stupid(), decide_unrolling_and_peeling(), fill_vec_av_set(), num_loop_insns(), peel_loops_completely(), and try_unroll_loop_completely().
int loop::num |
Referenced by access_functions_are_affine_or_constant_p(), add_loop_to_tree(), add_to_conflicts(), adjust_range_with_scev(), am_vector_index_for_loop(), analyze_evolution_in_loop(), analyze_function(), analyze_memory_references(), analyze_miv_subscript(), analyze_overlapping_iterations(), analyze_scalar_evolution(), analyze_scalar_evolution_in_loop(), build_iv_mapping(), build_loop_iteration_domains(), build_scop_iteration_domain(), build_sese_loop_nests(), calculate_loop_reg_pressure(), canonicalize_loop_induction_variables(), chrec_convert_1(), classify_partition(), compute_alignments(), compute_live_loop_exits(), compute_overall_effect_of_inner_loop(), compute_scalar_evolution_in_loop(), copy_loop_headers(), create_canonical_iv(), create_loop_tree_nodes(), create_preheader(), decide_unrolling_and_peeling(), delete_loop(), determine_invariantness_stmt(), disambiguate_multiple_latches(), distribute_loop(), doloop_optimize(), dr_analyze_innermost(), draw_cfg_nodes_for_loop(), dump_data_dependence_relation(), execute_sm(), find_defs(), find_obviously_necessary_stmts(), find_refs_for_sm(), find_simple_exit(), finite_loop_p(), fix_loop_structure(), fixup_loop_arrays_after_move(), flow_loop_dump(), flow_loops_find(), follow_ssa_edge_binary(), for_all_locs_in_loop(), form_loop_tree(), gather_mem_refs_stmt(), get_bb_type(), get_initial_def_for_induction(), get_loop_copy(), get_loops_exits(), idx_infer_loop_bounds(), index_in_loop_nest(), infer_loop_bounds_from_pointer_arith(), infer_loop_bounds_from_signedness(), instantiate_scev(), loop_niter_by_eval(), loop_parallel_p(), mark_ref_stored(), merge_latch_edges(), move_computations_stmt(), num_ssa_operands(), number_of_iterations_cond(), object_address_invariant_in_loop_p(), outermost_indep_loop(), parallelize_loops(), peel_loops_completely(), place_new_loop(), print_loop(), rdg_flag_vertex(), record_dep_loop(), record_estimate(), record_mem_ref_loc(), record_nonwrapping_iv(), reduction_phi_p(), ref_indep_loop_p_1(), ref_indep_loop_p_2(), scale_loop_profile(), scev_const_prop(), sel_dump_cfg_2(), sese_contains_loop(), sese_record_loop(), set_loop_copy(), simple_iv(), sms_schedule(), sort_bbs_in_loop_postorder_cmp(), sort_conflict_id_map(), tree_estimate_loop_size(), tree_fold_binomial(), tree_loop_distribution(), tree_predictive_commoning_loop(), tree_ssa_iv_optimize_loop(), tree_ssa_prefetch_arrays(), tree_ssa_unswitch_loops(), try_unroll_loop_completely(), vect_analyze_data_ref_dependence(), vect_analyze_scalar_cycles_1(), vect_do_peeling_for_loop_bound(), vect_find_same_alignment_drs(), verify_loop_structure(), and vrp_var_may_overflow().
unsigned loop::num_nodes |
Referenced by add_bb_to_loop(), add_loop(), analyze_insns_in_loop(), average_num_loop_insns(), can_duplicate_loop_p(), cancel_loop(), combine_blocks(), compute_always_reached(), destroy_loop(), destroy_loop_vec_info(), determine_bb_domination_status(), doloop_valid_p(), draw_cfg_nodes_for_loop(), duplicate_loop_to_header_edge(), estimate_function_body_sizes(), estimate_loops_at_level(), fill_always_executed_in_1(), find_data_references_in_loop(), find_defs(), find_exits(), find_givs(), find_interesting_uses(), find_invariants_body(), find_simple_exit(), fix_bb_placements(), fix_loop_placement(), flow_loop_dump(), flow_loops_find(), 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_dom_order(), get_loop_body_in_if_conv_order(), get_loop_body_pbbs(), get_loop_exit_edges(), if_convertible_loop_p(), if_convertible_loop_p_1(), infer_loop_bounds_from_undefined(), init_loops_structure(), insert_gimplified_predicates(), iv_analysis_loop_init(), loop_has_blocks_with_irreducible_flag(), loop_has_vector_phi_nodes(), loop_only_exit_p(), loop_single_full_bb_p(), loop_version(), mark_loop_unsched(), move_loop_invariants(), move_sese_region_to_fn(), new_loop_vec_info(), num_loop_branches(), num_loop_insns(), predicate_all_scalar_phis(), predicate_bbs(), predicate_mem_writes(), 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(), should_unroll_loop_p(), slpeel_can_duplicate_loop_p(), slpeel_tree_duplicate_loop_to_edge_cfg(), sms_schedule_by_order(), stmts_from_loop(), thread_through_loop_header(), tree_estimate_loop_size(), tree_if_conversion(), tree_loop_distribution(), tree_num_loop_insns(), tree_ssa_iv_optimize_loop(), tree_unswitch_single_loop(), unloop(), unroll_loop_runtime_iterations(), unswitch_single_loop(), update_dominators_in_loop(), vect_analyze_loop_form(), vect_analyze_loop_operations(), vect_determine_vectorization_factor(), vect_get_single_scalar_iteration_cost(), vect_mark_stmts_to_be_vectorized(), vect_pattern_recog(), vect_transform_loop(), and verify_loop_structure().
int loop::safelen |
Referenced by expand_omp_simd(), and vect_analyze_data_ref_dependence().
tree loop::simduid |
struct niter_desc* loop::simple_loop_desc |
Referenced by free_simple_loop_desc(), and get_simple_loop_desc().
bool loop::warned_aggressive_loop_optimizations |
Referenced by do_warn_aggressive_loop_optimizations().