#include "config.h"#include "system.h"#include "tree.h"#include "rtl.h"#include "hard-reg-set.h"#include "basic-block.h"#include "regs.h"#include "flags.h"#include "output.h"#include "function.h"#include "except.h"#include "toplev.h"#include "tm_p.h"#include "obstack.h"#include "insn-config.h"

Go to the source code of this file.
| #define gen_return | ( | ) | NULL_RTX |
Definition at line 74 of file cfgrtl.c.
Referenced by expand_epilogue(), fix_crossing_conditional_branches(), force_nonfallthru_and_redirect(), gen_far_branch(), iq2000_expand_epilogue(), and mips_expand_epilogue().
| #define HAVE_return 0 |
Definition at line 73 of file cfgrtl.c.
Referenced by fix_crossing_conditional_branches(), force_nonfallthru_and_redirect(), and thread_prologue_and_epilogue_insns().
| static bool back_edge_of_syntactic_loop_p | ( | basic_block | bb1, | |
| basic_block | bb2 | |||
| ) | [static] |
Definition at line 1220 of file cfgrtl.c.
References count, GET_CODE, insn, basic_block_def::next_bb, NEXT_INSN, NOTE_INSN_LOOP_BEG, NOTE_INSN_LOOP_END, and NOTE_LINE_NUMBER.
Referenced by rtl_split_edge(), and split_edge().
| rtx block_label | ( | basic_block | block | ) |
Definition at line 658 of file cfgrtl.c.
Referenced by add_labels_and_missing_jumps(), block_has_preserve_label(), block_label_after(), cfg_layout_redirect_edge(), compute_init_costs(), dead_or_predicable(), fix_crossing_conditional_branches(), fix_up_fall_thru_edges(), fixup_reorder_chain(), force_nonfallthru_and_redirect(), label_for_bb(), redirect_branch_edge(), redirect_edge_and_branch(), rtl_lv_add_condition_to_bb(), split_pattern_seq(), try_redirect_by_replacing_jump(), try_simplify_condjump(), unroll_loop_runtime_iterations(), and unswitch_loop().
| static int can_delete_label_p | ( | rtx | label | ) | [static] |
Definition at line 106 of file cfgrtl.c.
References forced_labels, in_expr_list_p(), LABEL_NAME, LABEL_PRESERVE_P, and label_value_list.
Referenced by delete_insn().
| static int can_delete_note_p | ( | rtx | note | ) | [static] |
Definition at line 95 of file cfgrtl.c.
References NOTE_INSN_BASIC_BLOCK, NOTE_INSN_DELETED, NOTE_INSN_PREDICTION, and NOTE_LINE_NUMBER.
Referenced by delete_insn_chain().
Definition at line 1499 of file cfgrtl.c.
Referenced by bypass_conditional_jumps(), convert_from_ssa(), eliminate_partially_redundant_loads(), emit_insn_at_entry(), finish_eh_generation(), fixup_abnormal_edges(), flow_call_edges_add(), initialize_uninitialized_subregs(), pre_gcse(), rtl_flow_call_edges_add(), rtl_value_profile_transformations(), see_commit_changes(), store_motion(), and thread_prologue_and_epilogue_insns().
Definition at line 1372 of file cfgrtl.c.
References abort, after, basic_block_def::aux, before, delete_insn(), EDGE_ABNORMAL, EDGE_FALLTHRU, emit_barrier_after(), emit_insn_after(), emit_insn_before(), basic_block_def::end, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, GET_CODE, get_last_insn(), basic_block_def::head, insns, keep_with_call_p(), last, next, NEXT_INSN, next_nonnote_insn(), NOTE_INSN_BASIC_BLOCK_P, NOTE_INSN_LOOP_BEG, NOTE_LINE_NUMBER, NULL, NULL_RTX, PREV_INSN, prev_nonnote_insn(), returnjump_p(), split_edge(), basic_block_def::succ, and tmp.
Referenced by commit_edge_insertions(), and commit_edge_insertions_watch_calls().
Definition at line 439 of file cfgrtl.c.
Referenced by frv_optimize_membar(), ia64_reorg(), init_ra(), m68hc11_reorg(), reg_alloc(), and schedule_ebbs().
| basic_block create_basic_block | ( | rtx | head, | |
| rtx | end, | |||
| basic_block | after | |||
| ) |
Definition at line 335 of file cfgrtl.c.
References basic_block_def::aux, basic_block_info, create_basic_block_structure(), last_basic_block, n_basic_blocks, NULL, and VARRAY_GROW.
Referenced by begin_schedule_ready(), cfg_layout_duplicate_bb(), cfg_layout_split_edge(), construct_exit_block(), construct_init_block(), copy_bb(), create_empty_bb(), emit_to_new_bb_before(), expand_gimple_cond_expr(), expand_gimple_tailcall(), fix_crossing_conditional_branches(), force_nonfallthru_and_redirect(), make_blocks(), rtl_split_block(), rtl_split_edge(), split_block(), and split_edge().
| basic_block create_basic_block_structure | ( | rtx | head, | |
| rtx | end, | |||
| rtx | bb_note, | |||
| basic_block | after | |||
| ) |
Definition at line 258 of file cfgrtl.c.
Referenced by create_basic_block(), find_basic_blocks_1(), and rtl_create_basic_block().
| void debug_bb | ( | basic_block | bb | ) |
Definition at line 119 of file cfgrtl.c.
Referenced by bfin_optimize_loop(), c4x_rptb_insert(), calculate_needs_all_insns(), cfg_layout_merge_blocks(), cfg_layout_redirect_edge(), cfg_layout_redirect_edge_and_branch(), check_dbra_loop(), cleanup_barriers(), cleanup_unconditional_jumps(), combine_bnp(), combine_btr_defs(), combine_stack_adjustments_for_block(), commit_one_edge_insertion(), cond_move_process_if_block(), conditionalize_block(), connect_post_landing_pads(), convert_from_ssa(), copy_loop_body(), cprop_jump(), cse_cc_succs(), cse_insn(), dead_or_predicable(), delete_address_reloads_1(), delete_barrier(), delete_caller_save_insns(), delete_dead_jumptables(), delete_insn_and_edges(), delete_insn_bb(), delete_insn_chain(), delete_null_pointer_checks_1(), delete_output_reload(), delete_redundant_insns_1(), delete_related_insns(), df_insn_delete(), divmod_fixed_value_transform(), dump_table(), duplicate_insn_chain(), eliminate_partially_redundant_load(), emit_new_cond_insn(), expand_gimple_tailcall(), expected_value_to_br_prob(), final(), final_scan_insn(), find_basic_blocks_1(), find_cond_trap(), fix_basic_block_boundaries(), fix_crossing_unconditional_branches(), fixup_abnormal_edges(), fixup_match_1(), fixup_var_refs_1(), fixup_var_refs_insn(), frv_optimize_membar_global(), frv_optimize_membar_local(), get_uncond_jump_length(), hoist_code(), i960_output_call_insn(), ia64_emit_deleted_label_after_insn(), instantiate_virtual_regs_in_insn(), instantiate_virtual_regs_lossage(), ip2k_reorg(), ix86_pad_returns(), loop_delete_insns(), merge_blocks_move_predecessor_nojumps(), merge_blocks_move_successor_nojumps(), mod_pow2_value_transform(), mod_subtract_transform(), move_btr_def(), move_invariant_reg(), move_movables(), mt_check_delay_slot(), mt_reorg_loops(), noce_process_if_block(), pa_combine_instructions(), pa_reorg(), pre_delete(), process_note_predictions(), reemit_insn_block_notes(), reload(), reload_as_needed(), reload_combine(), reload_cse_move2add(), replace_store_insn(), rest_of_compilation(), scan_loop(), scope_to_insns_finalize(), scope_to_insns_initialize(), see_commit_ref_changes(), see_delete_merged_def_extension(), see_delete_unmerged_def_extension(), split_branches(), split_iv(), substitute_ep_register(), thread_prologue_and_epilogue_insns(), try_auto_increment(), try_redirect_by_replacing_jump(), try_split(), and update_equiv_regs().
Definition at line 191 of file cfgrtl.c.
Referenced by delete_noop_moves(), delete_trivially_dead_insns(), propagate_block_delete_insn(), reload_cse_simplify(), split_all_insns(), split_all_insns_noflow(), and split_insn().
Definition at line 211 of file cfgrtl.c.
Referenced by cfg_layout_merge_blocks(), delete_insn_chain_and_edges(), fix_basic_block_boundaries(), flow_delete_block_noexpunge(), merge_blocks_nomove(), move_movables(), rtl_delete_block(), rtl_merge_blocks(), rtl_tidy_fallthru_edge(), tidy_fallthru_edge(), try_optimize_cfg(), and try_redirect_by_replacing_jump().
| void dump_bb | ( | basic_block | bb, | |
| FILE * | outf | |||
| ) |
Definition at line 1586 of file cfgrtl.c.
References dump_edge_info(), dump_regset(), fprintf(), fputs(), HOST_WIDEST_INT, HOST_WIDEST_INT_PRINT_DEC, insn, last, NEXT_INSN, edge::pred, edge::pred_next, print_rtl_single(), putc(), edge::succ, and edge::succ_next.
| int flow_delete_block | ( | basic_block | b | ) |
Definition at line 425 of file cfgrtl.c.
References expunge_block(), and flow_delete_block_noexpunge().
Referenced by cleanup_unconditional_jumps(), delete_unreachable_blocks(), find_cond_trap(), find_if_case_1(), find_if_case_2(), try_crossjump_to_edge(), try_optimize_cfg(), and try_simplify_condjump().
| int flow_delete_block_noexpunge | ( | basic_block | b | ) |
Definition at line 360 of file cfgrtl.c.
References delete_insn_chain(), end, GET_CODE, insn, JUMP_LABEL, maybe_remove_eh_handler(), never_reached_warning(), NEXT_INSN, next_nonnote_insn(), NOTE_INSN_DELETED, NOTE_INSN_LOOP_CONT, NOTE_INSN_PREDICTION, NOTE_LINE_NUMBER, NULL, NULL_RTX, PATTERN, PREV_INSN, remove_edge(), and tmp.
Referenced by flow_delete_block().
| basic_block force_nonfallthru | ( | edge | e | ) |
Definition at line 1095 of file cfgrtl.c.
Referenced by emit_to_new_bb_before(), fix_up_fall_thru_edges(), fixup_reorder_chain(), merge_blocks(), merge_blocks_move(), rtl_split_edge(), and split_edge().
| static basic_block force_nonfallthru_and_redirect | ( | edge | e, | |
| basic_block | target | |||
| ) | [static] |
Definition at line 942 of file cfgrtl.c.
References abort, any_condjump_p(), b, block_label(), COPY_REG_SET, basic_block_def::count, create_basic_block(), EDGE_ABNORMAL, EDGE_CAN_FALLTHRU, EDGE_FALLTHRU, EDGE_FREQUENCY, emit_barrier_after(), emit_jump_insn_after(), basic_block_def::end, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, find_reg_note(), basic_block_def::flags, flow_obstack, basic_block_def::frequency, gen_jump(), gen_return, GET_CODE, basic_block_def::global_live_at_end, basic_block_def::global_live_at_start, HAVE_return, INTVAL, JUMP_LABEL, LABEL_NUSES, last_loop_beg_note(), basic_block_def::loop_depth, make_edge(), make_single_succ_edge(), NEXT_INSN, NULL, NULL_RTX, OBSTACK_ALLOC_REG_SET, PATTERN, redirect_edge_pred(), redirect_edge_succ_nodup(), redirect_jump(), REG_BR_PROB, REG_BR_PROB_BASE, src, basic_block_def::succ, edge::succ_next, unchecked_make_edge(), and XEXP.
Referenced by force_nonfallthru(), redirect_edge_and_branch_force(), and rtl_redirect_edge_and_branch_force().
Definition at line 460 of file cfgrtl.c.
Referenced by rest_of_clean_state(), rest_of_compilation(), and rest_of_handle_loop_optimize().
Definition at line 1349 of file cfgrtl.c.
Referenced by bypass_block(), divmod_fixed_value_transform(), eliminate_partially_redundant_load(), eliminate_phi(), emit_insn_at_entry(), fixup_abnormal_edges(), flow_call_edges_add(), initialize_uninitialized_subregs(), insert_store(), instrument_edges(), mod_pow2_value_transform(), mod_subtract_transform(), pre_edge_insert(), rtl_flow_call_edges_add(), safe_insert_insn_on_edge(), see_pre_insert_extensions(), sjlj_emit_function_enter(), sjlj_emit_function_exit(), and thread_prologue_and_epilogue_insns().
Definition at line 812 of file cfgrtl.c.
References GET_CODE, last, NEXT_INSN, NOTE_INSN_BASIC_BLOCK, NOTE_INSN_LOOP_BEG, and NOTE_LINE_NUMBER.
Referenced by force_nonfallthru_and_redirect().
| void merge_blocks_nomove | ( | basic_block | a, | |
| basic_block | b | |||
| ) |
Definition at line 550 of file cfgrtl.c.
References delete_insn_chain(), expunge_block(), GET_CODE, NEXT_INSN, NOTE_INSN_BASIC_BLOCK, NOTE_INSN_BASIC_BLOCK_P, NOTE_LINE_NUMBER, NULL, NULL_RTX, only_sets_cc0_p(), prev, PREV_INSN, prev_nonnote_insn(), remove_edge(), set_block_for_insn, edge::src, edge::succ, edge::succ_next, tmp, and x.
Referenced by merge_blocks(), merge_blocks_move_predecessor_nojumps(), merge_blocks_move_successor_nojumps(), and merge_if_block().
| static bool back_edge_of_syntactic_loop_p PARAMS | ( | (basic_block, basic_block) | ) | [static] |
| static bool try_redirect_by_replacing_jump PARAMS | ( | (edge, basic_block) | ) | [static] |
| static int can_delete_note_p PARAMS | ( | (rtx) | ) | [static] |
Definition at line 1640 of file cfgrtl.c.
Referenced by df_ri_compute(), df_ri_dump(), execute_one_pass(), execute_todo(), if_convert(), rest_of_compilation(), rest_of_handle_branch_prob(), rest_of_handle_branch_target_load_optimize(), rest_of_handle_cfg(), rest_of_handle_combine(), rest_of_handle_cse(), rest_of_handle_cse2(), rest_of_handle_flow2(), rest_of_handle_gcse(), rest_of_handle_gcse2(), rest_of_handle_if_after_combine(), rest_of_handle_if_after_reload(), rest_of_handle_if_conversion(), rest_of_handle_jump2(), rest_of_handle_jump_bypass(), rest_of_handle_life(), rest_of_handle_loop2(), rest_of_handle_old_regalloc(), rest_of_handle_postreload(), rest_of_handle_regmove(), rest_of_handle_regrename(), rest_of_handle_reorder_blocks(), rest_of_handle_tracer(), rest_of_handle_value_profile_transformations(), rest_of_handle_variable_tracking(), and rest_of_handle_web().
| bool purge_all_dead_edges | ( | int | update_life_p | ) |
Definition at line 2354 of file cfgrtl.c.
Referenced by combine_instructions(), rest_of_compilation(), rest_of_handle_cse(), rest_of_handle_cse2(), rest_of_handle_gcse(), rest_of_handle_local_alloc(), rest_of_handle_old_regalloc(), rest_of_handle_postreload(), and tree_expand_cfg().
| bool purge_dead_edges | ( | basic_block | bb | ) |
Definition at line 2184 of file cfgrtl.c.
Referenced by cprop_jump(), delete_insn_and_edges(), delete_insn_chain_and_edges(), delete_null_pointer_checks_1(), find_bb_boundaries(), fixup_abnormal_edges(), and purge_all_dead_edges().
| bool redirect_edge_and_branch | ( | edge | e, | |
| basic_block | target | |||
| ) |
Definition at line 837 of file cfgrtl.c.
Referenced by bypass_block(), cfg_layout_redirect_edge(), combine_blocks(), eliminate_tail_call(), loop_delete_branch_edge(), perfect_nestify(), redirect_edge_and_branch_force(), redirect_edges(), remove_dead_stmt(), remove_forwarder_block(), remove_forwarder_block_with_phi(), rtl_redirect_edge_and_branch_force(), rtl_split_edge(), split_edge(), tree_duplicate_sese_region(), tree_split_edge(), try_forward_edges(), and try_optimize_cfg().
| basic_block redirect_edge_and_branch_force | ( | edge | e, | |
| basic_block | target | |||
| ) |
Definition at line 1106 of file cfgrtl.c.
Referenced by bypass_block(), cfg_layout_split_edge(), copy_bbs(), duplicate_block(), duplicate_loop_to_header_edge(), find_if_case_1(), loop_redirect_edge(), make_forwarder_block(), redirect_edge_with_latch_update(), slpeel_tree_duplicate_loop_to_edge_cfg(), try_crossjump_to_edge(), and try_forward_edges().
| edge split_block | ( | basic_block | bb, | |
| rtx | insn | |||
| ) |
Definition at line 490 of file cfgrtl.c.
References BB_DIRTY, COPY_REG_SET, basic_block_def::count, create_basic_block(), EDGE_FALLTHRU, basic_block_def::flags, flow_obstack, basic_block_def::frequency, basic_block_def::global_live_at_end, basic_block_def::global_live_at_start, basic_block_def::loop_depth, make_single_succ_edge(), NEXT_INSN, NULL, OBSTACK_ALLOC_REG_SET, propagate_block(), reload_completed, edge::src, basic_block_def::succ, edge::succ, and edge::succ_next.
Referenced by block_label_after(), branch_prob(), copy_edges_for_bb(), divmod_fixed_value_transform(), erase_matching_seqs(), execute_fixup_cfg(), expand_call_inline(), expand_complex_div_wide(), expand_omp_parallel(), expand_parallel_call(), find_bb_boundaries(), fixup_fallthru_exit_predecessor(), flow_call_edges_add(), make_forwarder_block(), mf_build_check_statement_for(), mod_pow2_value_transform(), mod_subtract_transform(), Rename_Privatized_COMMON(), rtl_flow_call_edges_add(), rtl_gen_const_delta_profiler(), rtl_gen_interval_profiler(), rtl_gen_one_value_profiler(), rtl_gen_pow2_profiler(), split_block_after_labels(), split_loop_bb(), split_pattern_seq(), tree_divmod_fixed_value(), tree_flow_call_edges_add(), tree_mod_pow2(), tree_mod_subtract(), try_crossjump_to_edge(), and VEC().
| basic_block split_edge | ( | edge | edge_in | ) |
Definition at line 1259 of file cfgrtl.c.
Referenced by begin_schedule_ready(), branch_prob(), canonicalize_loop_headers(), commit_one_edge_insertion(), fix_basic_block_boundaries(), init_pre(), loop_optimizer_init(), loop_split_edge_with(), lv_adjust_loop_entry_edge(), mf_build_check_statement_for(), remove_forwarder_block_with_phi(), slpeel_tree_peel_loop_to_edge(), slpeel_update_phi_nodes_for_guard1(), slpeel_update_phi_nodes_for_guard2(), split_critical_edges(), tree_find_edge_insert_loc(), tree_optimize_tail_calls_1(), and vect_transform_loop().
| void tidy_fallthru_edge | ( | edge | e, | |
| basic_block | b, | |||
| basic_block | c | |||
| ) |
Definition at line 1123 of file cfgrtl.c.
References any_condjump_p(), any_uncondjump_p(), delete_insn_chain(), EDGE_FALLTHRU, basic_block_def::end, GET_CODE, basic_block_def::head, INSN_P, NEXT_INSN, NOTE_LINE_NUMBER, NULL, only_sets_cc0_p(), onlyjump_p(), PREV_INSN, q, basic_block_def::succ, and edge::succ_next.
Referenced by merge_if_block(), tidy_fallthru_edges(), and try_simplify_condjump().
Definition at line 1180 of file cfgrtl.c.
Referenced by delete_unreachable_blocks(), and find_basic_blocks().
| static bool try_redirect_by_replacing_jump | ( | edge | e, | |
| basic_block | target | |||
| ) | [static] |
Definition at line 678 of file cfgrtl.c.
References abort, block_label(), can_fallthru(), cc0_rtx, basic_block_def::count, delete_insn(), delete_insn_chain(), edge::dest, EDGE_FALLTHRU, emit_barrier_after(), emit_jump_insn_after(), basic_block_def::end, EXIT_BLOCK_PTR, edge::flags, flow2_completed, fprintf(), gen_jump(), GET_CODE, basic_block_def::head, basic_block_def::index, insn, INSN_UID, JUMP_LABEL, LABEL_NUSES, NEXT_INSN, next_nonnote_insn(), NOTE_LINE_NUMBER, NULL_RTX, onlyjump_p(), PATTERN, PREV_INSN, redirect_edge_succ(), redirect_jump(), REG_BR_PROB_BASE, reg_mentioned_p(), remove_edge(), rtl_dump_file, side_effects_p(), simplejump_p(), single_set, src, basic_block_def::succ, edge::succ_next, and tmp.
Referenced by cfg_layout_merge_blocks(), cfg_layout_redirect_edge_and_branch(), redirect_edge_and_branch(), rtl_redirect_edge_and_branch(), and try_optimize_cfg().
| void update_bb_for_insn | ( | basic_block | bb | ) |
Definition at line 471 of file cfgrtl.c.
Referenced by add_missing_bbs(), construct_exit_block(), construct_init_block(), create_basic_block_structure(), emit_to_new_bb_before(), expand_gimple_basic_block(), expand_gimple_cond_expr(), expand_gimple_tailcall(), and fix_basic_block_boundaries().
| void update_br_prob_note | ( | basic_block | bb | ) |
Definition at line 1728 of file cfgrtl.c.
Referenced by dead_or_predicable(), fix_up_fall_thru_edges(), fixup_reorder_chain(), try_crossjump_to_edge(), try_forward_edges(), and try_simplify_condjump().
Definition at line 1761 of file cfgrtl.c.
Referenced by branch_prob(), cfg_layout_finalize(), cfg_remove_useless_stmts(), cleanup_tree_cfg(), commit_edge_insertions(), commit_edge_insertions_watch_calls(), execute_todo(), find_basic_blocks(), fixup_abnormal_edges(), flow_call_edges_add(), flow_loops_find(), if_convert(), loop_optimizer_finalize(), move_loop_invariants(), rest_of_compilation(), rest_of_handle_flow2(), rest_of_handle_gcse(), rest_of_handle_gcse2(), rest_of_handle_jump(), rest_of_handle_jump_bypass(), rest_of_handle_life(), rtl_flow_call_edges_add(), split_all_insns(), tree_expand_cfg(), tree_flow_call_edges_add(), tree_unroll_loop(), and try_optimize_cfg().
Definition at line 80 of file cfgrtl.c.
Referenced by can_delete_label_p(), cleanup_cfg(), find_basic_blocks(), and find_basic_blocks_1().
Definition at line 81 of file cfgrtl.c.
Referenced by find_basic_blocks_1(), optimize_sibling_and_tail_recursive_calls(), and tail_recursion_label_p().
1.5.6