#include "config.h"#include "system.h"#include "rtl.h"#include "hard-reg-set.h"#include "basic-block.h"#include "toplev.h"

Go to the source code of this file.
Definition at line 569 of file cfgloop.c.
Referenced by canonicalize_loop_headers(), make_forwarder_block(), redirect_edge_with_latch_update(), and update_latch_info().
| #define HEAVY_EDGE_RATIO 8 |
| #define LATCH_EDGE | ( | E | ) | (*(int *) (E)->aux) |
Definition at line 570 of file cfgloop.c.
Referenced by canonicalize_loop_headers(), make_forwarder_block(), mfb_keep_nonlatch(), redirect_edge_with_latch_update(), and update_latch_info().
| void add_bb_to_loop | ( | basic_block | bb, | |
| struct loop * | loop | |||
| ) |
Definition at line 1025 of file cfgloop.c.
Referenced by add_loop(), bsi_insert_on_edge_immediate_loop(), copy_bbs(), create_preheader(), fix_bb_placement(), loop_commit_inserts(), loop_split_edge_with(), loopify(), mfb_update_loops(), perfect_nestify(), slpeel_tree_peel_loop_to_edge(), slpeel_update_phi_nodes_for_guard1(), slpeel_update_phi_nodes_for_guard2(), split_loop_bb(), unloop(), and vect_transform_loop().
Definition at line 646 of file cfgloop.c.
References alloc_aux_for_block(), alloc_aux_for_blocks(), alloc_aux_for_edge(), alloc_aux_for_edges(), calculate_dominance_info(), CDI_DOMINATORS, dominated_by_p(), EDGE_ABNORMAL, EDGE_FREQUENCY, ENTRY_BLOCK_PTR, edge::flags, FOR_EACH_BB, free_aux_for_blocks(), free_aux_for_edges(), free_dominance_info(), HEADER_BLOCK, HEAVY_EDGE_RATIO, loop::latch, LATCH_EDGE, make_forwarder_block(), NULL, basic_block_def::pred, edge::pred_next, split_edge(), edge::src, and basic_block_def::succ.
Referenced by flow_loops_find().
Definition at line 1055 of file cfgloop.c.
Referenced by add_exit_phis_edge(), analyze_scalar_evolution_1(), bsi_insert_on_edge_immediate_loop(), build_classic_dir_vector(), build_classic_dist_vector(), find_exits(), fix_bb_placements(), fix_loop_placement(), instantiate_parameters_1(), loop_commit_inserts(), loop_split_edge_with(), mark_irreducible_loops(), mark_loop_exit_edges(), outermost_invariant_loop(), and set_level().
| bool flow_bb_inside_loop_p | ( | struct loop * | loop, | |
| const basic_block | bb | |||
| ) | const |
Definition at line 954 of file cfgloop.c.
References ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, flow_loop_nested_p(), and basic_block_def::loop_father.
Referenced by add_exit_phis_edge(), add_to_dst_predicate_list(), analyze_evolution_in_loop(), analyze_initial_condition(), analyze_scalar_evolution_1(), can_put_in_inner_loop(), chain_of_csts_start(), check_irred(), check_loop_closed_ssa_use(), copy_loop_headers(), create_loop_notes(), duplicate_loop_to_header_edge(), estimate_probability(), expr_invariant_in_loop_p(), fill_always_executed_in(), fill_sons_in_loop(), find_exits(), find_interesting_uses(), find_simple_exit(), find_uses_to_rename_use(), fix_irreducible_loops(), fix_loop_placement(), flow_loop_exit_edges_find(), flow_loop_outside_edge_p(), follow_ssa_edge_inner_loop_phi(), gcc_loop_to_lambda_loop(), get_iv(), get_loop_body_in_bfs_order(), get_loop_exit_edges(), get_loops_exits(), insert_into_preds_of_block(), instantiate_parameters_1(), ip_normal_pos(), iv_elimination_compare(), loop_exit_edge_p(), mark_irreducible_loops(), mark_single_exit_loops(), may_eliminate_iv(), may_unswitch_on(), maybe_queue_var(), phi_loop_edge_uses_def(), predict_loops(), protect_loop_closed_ssa_form_use(), record_invariant(), rename_variables_in_bb(), should_duplicate_loop_header_p(), single_reachable_address(), slpeel_tree_duplicate_loop_to_edge_cfg(), tree_may_unswitch_on(), tree_unswitch_loop(), unroll_loop_runtime_iterations(), unswitch_loop(), update_vuses_to_preheader(), vect_create_epilog_for_reduction(), vect_get_vec_def_for_operand(), vect_is_simple_reduction(), vect_is_simple_use(), vect_mark_stmts_to_be_vectorized(), vect_stmt_relevant_p(), and verify_loop_structure().
Definition at line 108 of file cfgloop.c.
References flow_edge_list_print(), fprintf(), free(), get_loop_body(), i, index(), and loop_dump_aux().
Referenced by debug_loop(), flow_loops_dump(), and tree_ssa_iv_optimize().
Definition at line 240 of file cfgloop.c.
References abort, flow_loop_outside_edge_p(), num_entries, edge::pred, edge::pred_next, and xmalloc().
Referenced by flow_loop_scan().
Definition at line 271 of file cfgloop.c.
References dest, edge::dest, flow_bb_inside_loop_p(), free(), get_loop_body(), i, node, NULL, loop::num_exits, basic_block_def::succ, edge::succ_next, and xmalloc().
Referenced by flow_loop_scan().
Definition at line 185 of file cfgloop.c.
References free().
Referenced by cancel_loop(), fix_loop_structure(), flow_loops_free(), and unloop().
Definition at line 495 of file cfgloop.c.
References loop::inner, loop::level, and loop::next.
Referenced by flow_loop_level_compute(), and flow_loops_level_compute().
Definition at line 96 of file cfgloop.c.
References loop::depth, and loop::pred.
Referenced by add_dependency(), build_classic_dir_vector(), build_classic_dist_vector(), chrec_contains_symbols_defined_in_loop(), determine_lsm_ref(), determine_lsm_reg(), find_exits(), fix_bb_placement(), fix_bb_placements(), fix_loop_placement(), flow_bb_inside_loop_p(), follow_ssa_edge(), gather_interchange_stats(), outermost_invariant_loop_expr(), and set_level().
| static int flow_loop_nodes_find | ( | basic_block | header, | |
| struct loop * | loop | |||
| ) | [static] |
Definition at line 327 of file cfgloop.c.
References loop::depth, ENTRY_BLOCK_PTR, free(), loop::latch, basic_block_def::loop_depth, basic_block_def::loop_father, n_basic_blocks, node, loop::num_nodes, basic_block_def::pred, edge::pred_next, sp, edge::src, stack, and xmalloc().
Referenced by fix_loop_structure(), and flow_loops_find().
Definition at line 970 of file cfgloop.c.
References abort, edge::dest, flow_bb_inside_loop_p(), and edge::src.
Referenced by flow_loop_entry_edges_find().
| static basic_block flow_loop_pre_header_find | ( | basic_block | header, | |
| dominance_info | dom | |||
| ) | [static] |
Definition at line 416 of file cfgloop.c.
References dominated_by_p(), ENTRY_BLOCK_PTR, node, NULL, loop::pre_header, edge::pred, edge::pred_next, and edge::src.
Referenced by flow_loop_scan().
Definition at line 379 of file cfgloop.c.
References ENTRY_BLOCK_PTR, loop::num, basic_block_def::pred, edge::pred_next, edge::src, and xmalloc().
Referenced by flow_loop_scan().
Definition at line 536 of file cfgloop.c.
References flow_loop_entry_edges_find(), flow_loop_exit_edges_find(), flow_loop_pre_header_find(), flow_loop_pre_header_scan(), loop::header, LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES, LOOP_PRE_HEADER, and loop::pre_header.
Referenced by estimate_probability(), flow_loops_find(), if_convertible_loop_p(), linear_transform_loops(), predict_loops(), slpeel_tree_duplicate_loop_to_edge_cfg(), slpeel_tree_peel_loop_to_edge(), and vect_analyze_loop_form().
Definition at line 452 of file cfgloop.c.
Referenced by duplicate_loop(), fix_loop_placement(), fix_loop_structure(), flow_loops_find(), loopify(), and unloop().
Definition at line 469 of file cfgloop.c.
Referenced by cancel_loop(), fix_loop_placement(), fix_loop_structure(), and unloop().
Definition at line 52 of file cfgloop.c.
References edge::dest, FOR_EACH_BB, fprintf(), fputs(), i, basic_block_def::index, n_basic_blocks, basic_block_def::succ, and edge::succ_next.
Referenced by flow_loops_dump().
| void flow_loops_dump | ( | struct loops * | loops, | |
| void * | FILE *, | |||
| void * | loop_dump_aux, | |||
| int | verbose | |||
| ) | const |
Definition at line 153 of file cfgloop.c.
References flow_loop_dump(), flow_loops_cfg_dump(), fprintf(), i, and loop_dump_aux().
Referenced by debug_loops(), loop_optimizer_finalize(), loop_optimizer_init(), rest_of_compilation(), rest_of_handle_branch_prob(), and tree_estimate_probability().
Definition at line 758 of file cfgloop.c.
Referenced by create_loop_notes(), flow_loops_update(), if_convert(), loop_optimizer_init(), mark_loop_exit_edges(), perfect_nestify(), rest_of_compilation(), rest_of_handle_branch_prob(), tree_estimate_probability(), and tree_ssa_dominator_optimize().
Definition at line 202 of file cfgloop.c.
Referenced by create_loop_notes(), flow_loops_update(), if_convert(), loop_optimizer_finalize(), loop_optimizer_init(), mark_loop_exit_edges(), rest_of_compilation(), rest_of_handle_branch_prob(), tree_estimate_probability(), and tree_ssa_dominator_optimize().
Definition at line 526 of file cfgloop.c.
References flow_loop_level_compute().
Referenced by flow_loops_find().
| basic_block* get_loop_body | ( | struct loop * | loop | ) | const |
Definition at line 990 of file cfgloop.c.
References abort, dfs_enumerate_from(), EXIT_BLOCK_PTR, FOR_EACH_BB, glb_enum_p(), n_basic_blocks, and xcalloc().
Referenced by analyze_insns_in_loop(), average_num_loop_insns(), can_convert_to_perfect_nest(), can_duplicate_loop_p(), cancel_loop(), clean_predicate_lists(), duplicate_loop_to_header_edge(), empty_loop_p(), estimate_loops_at_level(), estimate_probability(), find_data_references_in_loop(), find_interesting_uses(), find_simple_exit(), fix_loop_placement(), flow_loop_dump(), flow_loop_exit_edges_find(), gather_mem_refs(), get_loop_exit_edges(), infer_loop_bounds_from_undefined(), loop_only_exit_p(), loopify(), new_loop_vec_info(), num_loop_branches(), num_loop_insns(), perfect_nest_p(), perfect_nestify(), predict_loops(), referenced_in_one_insn_in_loop_p(), rename_variables_in_loop(), scale_loop_frequencies(), slpeel_tree_duplicate_loop_to_edge_cfg(), tree_num_loop_insns(), tree_unswitch_single_loop(), unloop(), unroll_loop_runtime_iterations(), unswitch_single_loop(), and verify_loop_structure().
| static bool glb_enum_p | ( | basic_block | bb, | |
| void * | glb_header | |||
| ) | [static] |
Definition at line 1178 of file cfgloop.c.
References edge::pred, edge::pred_next, and edge::src.
Referenced by add_old_iv_candidates(), copy_loop_headers(), create_iv(), create_preheader(), duplicate_loop_to_header_edge(), estimate_loops_at_level(), get_base_for(), loop_niter_by_eval(), mark_bivs(), schedule_sm(), slpeel_update_phis_for_duplicate_loop(), tree_unroll_loop(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), unroll_loop_stupid(), vect_create_epilog_for_reduction(), vect_is_simple_reduction(), vectorizable_load(), and verify_loop_structure().
Definition at line 1191 of file cfgloop.c.
References edge::pred, edge::pred_next, and edge::src.
Referenced by analyze_insns_in_loop(), copy_loop_headers(), create_iv(), determine_exit_conditions(), find_bivs(), fix_loop_placements(), fix_loop_structure(), get_base_for(), lambda_loopnest_to_gcc_loopnest(), loop_niter_by_eval(), loop_version(), move_computations_stmt(), move_invariant_reg(), peel_loop_completely(), peel_loop_simple(), remove_empty_loop(), simplify_using_entry_checks(), simplify_using_initial_values(), slpeel_can_duplicate_loop_p(), slpeel_tree_duplicate_loop_to_edge_cfg(), slpeel_tree_peel_loop_to_edge(), slpeel_update_phi_nodes_for_guard1(), slpeel_update_phis_for_duplicate_loop(), tree_ssa_loop_version(), tree_unroll_loop(), try_unroll_loop_completely(), unloop(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), unswitch_loop(), update_vuses_to_preheader(), vect_analyze_loop_form(), vect_build_loop_niters(), vect_create_data_ref_ptr(), vect_create_epilog_for_reduction(), vect_do_peeling_for_alignment(), vect_do_peeling_for_loop_bound(), vect_gen_niters_for_prolog_loop(), vect_generate_tmps_on_preheader(), vect_get_vec_def_for_operand(), vect_init_vector(), vect_transform_loop(), and vectorizable_load().
| static basic_block make_forwarder_block | ( | basic_block | bb, | |
| int | redirect_latch, | |||
| int | redirect_nonlatch, | |||
| edge | except, | |||
| int | conn_latch | |||
| ) | [static] |
Definition at line 598 of file cfgloop.c.
References alloc_aux_for_edge(), basic_block_def::count, edge::dest, EDGE_FREQUENCY, first_insn_after_basic_block_note(), basic_block_def::frequency, HEADER_BLOCK, insn, LATCH_EDGE, basic_block_def::pred, edge::pred_next, PREV_INSN, redirect_edge_with_latch_update(), split_block(), edge::src, and xmalloc().
Referenced by analyze_edges_for_bb(), canonicalize_loop_headers(), and create_preheader().
| static void redirect_edge_with_latch_update PARAMS | ( | (edge, basic_block) | ) | [static] |
| static bool glb_enum_p PARAMS | ( | (basic_block, void *) | ) | [static] |
Definition at line 77 of file cplus-dem.c.
| static basic_block make_forwarder_block PARAMS | ( | (basic_block, int, int, edge, int) | ) | [static] |
| static basic_block flow_loop_pre_header_find PARAMS | ( | (basic_block, dominance_info) | ) | [static] |
| static int flow_loop_nodes_find PARAMS | ( | (basic_block, struct loop *) | ) | [static] |
| static void redirect_edge_with_latch_update | ( | edge | e, | |
| basic_block | to | |||
| ) | [static] |
Definition at line 574 of file cfgloop.c.
References alloc_aux_for_block(), alloc_aux_for_edge(), HEADER_BLOCK, jump, LATCH_EDGE, basic_block_def::pred, redirect_edge_and_branch_force(), and basic_block_def::succ.
Referenced by make_forwarder_block().
| void remove_bb_from_loops | ( | basic_block | bb | ) |
Definition at line 1040 of file cfgloop.c.
Referenced by combine_blocks(), fix_bb_placement(), remove_bbs(), and unloop().
Definition at line 1082 of file cfgloop.c.
References abort, edge::dest, err, error(), flow_bb_inside_loop_p(), FOR_EACH_BB, free(), get_loop_body(), loop::header, i, index(), loop::latch, basic_block_def::loop_father, loop::num, loop::num_nodes, loop::outer, basic_block_def::pred, edge::pred_next, basic_block_def::succ, edge::succ_next, VLS_EXPECT_PREHEADERS, VLS_EXPECT_SIMPLE_LATCHES, and xcalloc().
Referenced by cleanup_tree_cfg_loop(), copy_loop_headers(), flow_loops_find(), loop_optimizer_init(), peel_loops_completely(), tree_ssa_unswitch_loops(), tree_unroll_loop(), unroll_and_peel_loops(), and unswitch_loops().
1.5.6