#include "bitmap.h"#include "sbitmap.h"#include "varray.h"#include "partition.h"#include "hard-reg-set.h"#include "predict.h"#include "vec.h"#include "function.h"#include "cfghooks.h"

Go to the source code of this file.
| #define ALLOC_REG_SET | ( | OBSTACK | ) | BITMAP_ALLOC (OBSTACK) |
Definition at line 41 of file basic-block.h.
| #define AND_COMPL_REG_SET | ( | TO, | |||
| FROM | ) | bitmap_and_compl_into (TO, FROM) |
Definition at line 62 of file basic-block.h.
| #define AND_REG_SET | ( | TO, | |||
| FROM | ) | bitmap_and_into (TO, FROM) |
Definition at line 59 of file basic-block.h.
| #define BASIC_BLOCK | ( | N | ) | (VEC_index (basic_block, basic_block_info, (N))) |
Definition at line 414 of file basic-block.h.
| #define BASIC_BLOCK_FOR_FUNCTION | ( | FN, | |||
| N | ) | (VEC_index (basic_block, basic_block_info_for_function(FN), (N))) |
Definition at line 401 of file basic-block.h.
| #define basic_block_info (cfun->cfg->x_basic_block_info) |
Definition at line 407 of file basic-block.h.
Referenced by build_tree_cfg(), create_basic_block(), create_bb(), dump_function_to_file(), find_basic_blocks(), free_basic_block_vars(), init_empty_tree_cfg(), print_rtl_graph_with_bb(), rtl_create_basic_block(), and sh_output_mi_thunk().
| #define basic_block_info_for_function | ( | FN | ) | ((FN)->cfg->x_basic_block_info) |
Definition at line 395 of file basic-block.h.
| #define BB_COPY_PARTITION | ( | dstbb, | |||
| srcbb | ) | BB_SET_PARTITION (dstbb, BB_PARTITION (srcbb)) |
Definition at line 355 of file basic-block.h.
Definition at line 469 of file basic-block.h.
| #define BB_FREQ_MAX 10000 |
Definition at line 289 of file basic-block.h.
Definition at line 468 of file basic-block.h.
Definition at line 348 of file basic-block.h.
| #define BB_SET_PARTITION | ( | bb, | |||
| part | ) |
Value:
do { \ basic_block bb_ = (bb); \ bb_->flags = ((bb_->flags & ~(BB_HOT_PARTITION|BB_COLD_PARTITION)) \ | (part)); \ } while (0)
Definition at line 349 of file basic-block.h.
| #define BB_UNPARTITIONED 0 |
Definition at line 344 of file basic-block.h.
| #define BLOCK_NUM | ( | INSN | ) | (BLOCK_FOR_INSN (INSN)->index + 0) |
Definition at line 479 of file basic-block.h.
| #define BRANCH_EDGE | ( | bb | ) |
Value:
Definition at line 583 of file basic-block.h.
| #define CLEANUP_CFGLAYOUT 64 |
Definition at line 835 of file basic-block.h.
| #define CLEANUP_CROSSJUMP 2 |
Definition at line 828 of file basic-block.h.
| #define CLEANUP_EXPENSIVE 1 |
Definition at line 826 of file basic-block.h.
| #define CLEANUP_LOG_LINKS 128 |
Definition at line 836 of file basic-block.h.
| #define CLEANUP_NO_INSN_DEL 32 |
Definition at line 833 of file basic-block.h.
| #define CLEANUP_POST_REGSTACK 4 |
Definition at line 829 of file basic-block.h.
| #define CLEANUP_THREADING 16 |
Definition at line 832 of file basic-block.h.
| #define CLEANUP_UPDATE_LIFE 8 |
Definition at line 831 of file basic-block.h.
| #define CLEAR_REG_SET | ( | HEAD | ) | bitmap_clear (HEAD) |
Definition at line 50 of file basic-block.h.
| #define CLEAR_REGNO_REG_SET | ( | HEAD, | |||
| REG | ) | bitmap_clear_bit (HEAD, REG) |
Definition at line 75 of file basic-block.h.
| #define COPY_REG_SET | ( | TO, | |||
| FROM | ) | bitmap_copy (TO, FROM) |
Definition at line 53 of file basic-block.h.
| #define EDGE_ABNORMAL 2 |
Definition at line 151 of file basic-block.h.
| #define EDGE_ABNORMAL_CALL 4 |
Definition at line 153 of file basic-block.h.
| #define EDGE_ALL_FLAGS 16383 |
Definition at line 172 of file basic-block.h.
| #define EDGE_CAN_FALLTHRU 64 |
Definition at line 158 of file basic-block.h.
| #define EDGE_COMPLEX (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL | EDGE_EH) |
Definition at line 174 of file basic-block.h.
| #define EDGE_COUNT | ( | ev | ) | VEC_length (edge, (ev)) |
Definition at line 596 of file basic-block.h.
| #define EDGE_CRITICAL_P | ( | e | ) |
Value:
(EDGE_COUNT ((e)->src->succs) >= 2 \ && EDGE_COUNT ((e)->dest->preds) >= 2)
Definition at line 593 of file basic-block.h.
| #define EDGE_CROSSING 8192 |
Definition at line 169 of file basic-block.h.
| #define EDGE_DFS_BACK 32 |
Definition at line 157 of file basic-block.h.
| #define EDGE_EH 8 |
Definition at line 155 of file basic-block.h.
| #define EDGE_EXECUTABLE 4096 |
Definition at line 167 of file basic-block.h.
| #define EDGE_FAKE 16 |
Definition at line 156 of file basic-block.h.
| #define EDGE_FALLTHRU 1 |
Definition at line 150 of file basic-block.h.
| #define EDGE_FALSE_VALUE 2048 |
Definition at line 165 of file basic-block.h.
| #define EDGE_FREQUENCY | ( | e | ) |
Value:
(((e)->src->frequency \ * (e)->probability \ + REG_BR_PROB_BASE / 2) \ / REG_BR_PROB_BASE)
Definition at line 587 of file basic-block.h.
Definition at line 597 of file basic-block.h.
| #define EDGE_INDEX | ( | el, | |||
| pred, | |||||
| succ | ) | (find_edge_index ((el), (pred), (succ))) |
Definition at line 565 of file basic-block.h.
| #define EDGE_INDEX_NO_EDGE -1 |
Definition at line 561 of file basic-block.h.
| #define EDGE_IRREDUCIBLE_LOOP 128 |
Definition at line 160 of file basic-block.h.
| #define EDGE_LOOP_EXIT 512 |
Definition at line 162 of file basic-block.h.
Definition at line 598 of file basic-block.h.
| #define EDGE_SIBCALL 256 |
Definition at line 161 of file basic-block.h.
Definition at line 599 of file basic-block.h.
| #define EDGE_TRUE_VALUE 1024 |
Definition at line 163 of file basic-block.h.
Definition at line 670 of file basic-block.h.
Definition at line 669 of file basic-block.h.
| #define ENTRY_BLOCK (0) |
Definition at line 472 of file basic-block.h.
| #define ENTRY_BLOCK_PTR (cfun->cfg->x_entry_block_ptr) |
Definition at line 405 of file basic-block.h.
| #define ENTRY_BLOCK_PTR_FOR_FUNCTION | ( | FN | ) | ((FN)->cfg->x_entry_block_ptr) |
Definition at line 393 of file basic-block.h.
Referenced by constant_val_insert(), copy_body(), copy_cfg_body(), ipcp_profile_bb_print(), ipcp_profile_edge_print(), and tree_function_versioning().
| #define EXECUTE_IF_AND_COMPL_IN_REG_SET | ( | REGSET1, | |||
| REGSET2, | |||||
| MIN, | |||||
| REGNUM, | |||||
| RSI | ) | EXECUTE_IF_AND_COMPL_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI) |
Definition at line 101 of file basic-block.h.
| #define EXECUTE_IF_AND_IN_REG_SET | ( | REGSET1, | |||
| REGSET2, | |||||
| MIN, | |||||
| REGNUM, | |||||
| RSI | ) | EXECUTE_IF_AND_IN_BITMAP (REGSET1, REGSET2, MIN, REGNUM, RSI) \ |
Definition at line 107 of file basic-block.h.
| #define EXECUTE_IF_SET_IN_REG_SET | ( | REGSET, | |||
| MIN, | |||||
| REGNUM, | |||||
| RSI | ) | EXECUTE_IF_SET_IN_BITMAP (REGSET, MIN, REGNUM, RSI) |
Definition at line 95 of file basic-block.h.
| #define EXIT_BLOCK (1) |
Definition at line 473 of file basic-block.h.
| #define EXIT_BLOCK_PTR (cfun->cfg->x_exit_block_ptr) |
Definition at line 406 of file basic-block.h.
| #define EXIT_BLOCK_PTR_FOR_FUNCTION | ( | FN | ) | ((FN)->cfg->x_exit_block_ptr) |
Definition at line 394 of file basic-block.h.
Referenced by copy_cfg_body(), ipcp_profile_bb_print(), and ipcp_profile_edge_print().
| #define FALLTHRU_EDGE | ( | bb | ) |
Value:
Definition at line 579 of file basic-block.h.
Definition at line 445 of file basic-block.h.
Definition at line 448 of file basic-block.h.
Referenced by copy_cfg_body(), ipcp_update_bb_counts(), and ipcp_update_edges_counts().
Definition at line 418 of file basic-block.h.
| #define FOR_BB_INSNS | ( | BB, | |||
| INSN | ) |
| #define FOR_BB_INSNS_REVERSE | ( | BB, | |||
| INSN | ) |
Definition at line 424 of file basic-block.h.
| #define FOR_EACH_BB_FN | ( | BB, | |||
| FN | ) | FOR_BB_BETWEEN (BB, (FN)->cfg->x_entry_block_ptr->next_bb, (FN)->cfg->x_exit_block_ptr, next_bb) |
Definition at line 421 of file basic-block.h.
Referenced by analyze_function(), cgraph_create_edges(), copy_cfg_body(), estimate_num_insns(), inline_forbidden_p(), ipa_method_compute_modify(), ipa_pta_execute(), ipcp_profile_bb_print(), ipcp_profile_edge_print(), and verify_cgraph_node().
Definition at line 429 of file basic-block.h.
| #define FOR_EACH_BB_REVERSE_FN | ( | BB, | |||
| FN | ) | FOR_BB_BETWEEN (BB, (FN)->cfg->x_exit_block_ptr->prev_bb, (FN)->cfg->x_entry_block_ptr, prev_bb) |
Definition at line 426 of file basic-block.h.
| #define FOR_EACH_EDGE | ( | EDGE, | |||
| ITER, | |||||
| EDGE_VEC | ) |
Definition at line 44 of file basic-block.h.
Definition at line 573 of file basic-block.h.
Definition at line 569 of file basic-block.h.
Definition at line 570 of file basic-block.h.
| #define INIT_REG_SET | ( | HEAD | ) | bitmap_initialize (HEAD, ®_obstack) |
Definition at line 47 of file basic-block.h.
| #define IOR_AND_COMPL_REG_SET | ( | TO, | |||
| FROM1, | |||||
| FROM2 | ) | bitmap_ior_and_compl_into (TO, FROM1, FROM2) |
Definition at line 71 of file basic-block.h.
| #define IOR_REG_SET | ( | TO, | |||
| FROM | ) | bitmap_ior_into (TO, FROM) |
Definition at line 65 of file basic-block.h.
| #define label_to_block_map (cfun->cfg->x_label_to_block_map) |
Definition at line 411 of file basic-block.h.
Referenced by build_tree_cfg(), change_bb_for_stmt(), delete_tree_cfg_annotations(), free_basic_block_vars(), init_empty_tree_cfg(), label_to_block(), and set_bb_for_stmt().
| #define label_to_block_map_for_function | ( | FN | ) | ((FN)->cfg->x_label_to_block_map) |
Definition at line 399 of file basic-block.h.
| #define last_basic_block (cfun->cfg->x_last_basic_block) |
Definition at line 410 of file basic-block.h.
Referenced by add_to_dominance_info(), alloc_gcse_mem(), alloc_mem(), apply_opt_in_copies(), blocks_in_phiopt_order(), branch_prob(), break_superblocks(), build_store_vectors(), build_tree_cfg(), bypass_conditional_jumps(), calc_dfs_tree(), calc_dfs_tree_nonrec(), calc_idoms(), calculate_dominance_info(), calculate_global_regs_live(), calculate_live_on_entry(), calculate_live_on_exit(), cleanup_dead_labels(), combine_instructions(), commit_edge_insertions(), commit_edge_insertions_watch_calls(), compact_blocks(), compute_antic(), compute_antinout_edge(), compute_available(), compute_code_hoist_vbeinout(), compute_dominance_frontiers(), compute_global_livein(), compute_hash_table_work(), compute_insert_delete(), compute_iterated_dominance_frontiers(), compute_laterin(), compute_local_properties(), compute_nearerout(), compute_pre_data(), compute_rev_insert_delete(), compute_store_table(), compute_transpout(), convert_to_ssa(), copy_bb(), copy_phi_node_args(), copyprop_hardreg_forward(), create_basic_block(), create_basic_block_structure(), create_bb(), delete_null_pointer_checks(), delete_null_pointer_checks_1(), df_alloc(), df_analyse(), df_analyse_1(), df_analyze(), df_analyze_1(), df_compact_blocks(), df_grow_bb_info(), df_iterative_dataflow(), dfs_enumerate_from(), dump_tree_cfg(), expr_reaches_here_p(), find_basic_blocks(), find_basic_blocks_1(), find_idf(), fix_bb_placements(), fix_irreducible_loops(), fixup_abnormal_edges(), flow_call_edges_add(), flow_depth_first_order_compute(), flow_dfs_compute_reverse_init(), flow_loops_find(), flow_preorder_transversal_compute(), flow_reverse_top_sort_order_compute(), free_all_mem(), free_basic_block_vars(), frv_optimize_membar(), gcse_main(), gmalloc(), hoist_code(), hoist_expr_reaches_here_p(), init_dom_info(), init_empty_tree_cfg(), init_reassoc(), init_resource_info(), insert_aux(), insert_range_assertions(), iterative_dataflow(), iterative_dataflow_bitmap(), iterative_dataflow_sbitmap(), loop_commit_inserts(), loopify(), make_edges(), mark_dfs_back_edges(), mark_irreducible_loops(), mark_phi_for_rewrite(), mf_xform_derefs(), new_tree_live_info(), note_prediction_to_br_prob(), one_classic_gcse_pass(), one_code_hoisting_pass(), one_cprop_pass(), one_pre_gcse_pass(), opt_info_start_duplication(), partition_hot_cold_basic_blocks(), perform_tree_ssa_dce(), post_order_compute(), pre_and_rev_post_order_compute(), pre_edge_lcm(), pre_edge_rev_lcm(), pre_expr_reaches_here_p(), predict_paths_leading_to(), prepare_def_site_for(), process_note_prediction(), purge_all_dead_edges(), reachable_at_most_once(), record_edge_info(), remove_path(), remove_reachable_equiv_notes(), rename_variables(), reorder_basic_blocks(), rewrite_into_ssa(), rewrite_ssa_into_ssa(), rtl_create_basic_block(), rtl_flow_call_edges_add(), schedule_ebbs(), see_initialize_data_structures(), split_all_insns(), ssa_const_prop(), ssa_eliminate_dead_code(), ssa_prop_init(), tail_duplicate(), tree_bb_level_predictions(), tree_dce_done(), tree_dce_init(), tree_duplicate_loop_to_header_edge(), tree_expand_cfg(), tree_flow_call_edges_add(), tree_lower_complex(), tree_lower_complex_O0(), tree_lower_operations(), tree_ssa_lim_initialize(), update_life_info_in_dirty_blocks(), update_ssa(), verify_flow_info(), verify_loop_structure(), and vt_find_locations().
| #define last_basic_block_for_function | ( | FN | ) | ((FN)->cfg->x_last_basic_block) |
Definition at line 398 of file basic-block.h.
| #define n_basic_blocks (cfun->cfg->x_n_basic_blocks) |
Definition at line 408 of file basic-block.h.
Referenced by add_loop(), alloc_rbi_pool(), associate_equivalences_with_edges(), augment_live_range(), blocks_in_phiopt_order(), branch_prob(), build_btr_def_use_webs(), build_tree_cfg(), bypass_jumps(), calc_dfs_tree(), calc_dfs_tree_nonrec(), calculate_dominance_info(), calculate_global_regs_live(), calculate_reg_pav(), cleanup_forwarder_blocks(), compact_blocks(), compute_antinout_edge(), compute_avail(), compute_available(), compute_defs_uses_and_gen(), compute_global_livein(), compute_kill(), compute_laterin(), compute_nearerout(), compute_out(), compute_rvuse_and_antic_safe(), copy_loop_headers(), create_basic_block(), create_bb(), create_edge_list(), delete_null_pointer_checks(), delete_tree_cfg_annotations(), df_analyse_1(), df_analyze(), df_analyze_1(), df_compact_blocks(), dump_cfg_stats(), dump_flow_info(), dump_function_to_file(), dump_tree_cfg(), duplicate_computed_gotos(), entry_of_function(), execute_cse_reciprocals(), execute_pre(), expunge_block(), find_basic_blocks(), find_basic_blocks_1(), find_idf(), find_path(), find_unreachable_blocks(), fix_loop_structure(), fixup_reorder_chain(), flow_call_edges_add(), flow_depth_first_order_compute(), flow_dfs_compute_reverse_init(), flow_loop_nodes_find(), flow_loops_cfg_dump(), flow_loops_find(), flow_preorder_transversal_compute(), flow_reverse_top_sort_order_compute(), free_basic_block_vars(), gcse_main(), get_dominated_by(), get_loop_body(), global_alloc(), gmalloc(), init_dependency_caches(), init_dom_info(), init_empty_tree_cfg(), init_reassoc(), is_too_expensive(), link_btr_uses(), loopify(), mark_dfs_back_edges(), merge_phi_nodes(), migrate_btr_defs(), optimize_sibling_and_tail_recursive_calls(), partition_hot_cold_basic_blocks(), post_order_compute(), pre_and_rev_post_order_compute(), reachable_at_most_once(), record_edge_info(), redirect_immediate_dominators(), regno_clobbered_at_setjmp(), regno_uninitialized(), remove_path(), remove_reachable_equiv_notes(), reorder_basic_blocks(), rtl_create_basic_block(), rtl_flow_call_edges_add(), rtl_verify_flow_info(), schedule_ebbs(), set_up_bb_rts_numbers(), tail_duplicate(), tracer(), tree_duplicate_sese_region(), tree_flow_call_edges_add(), tree_ssa_phiopt(), try_forward_edges(), try_optimize_cfg(), unroll_loop_runtime_iterations(), variable_tracking_main(), verify_flow_info(), vt_find_locations(), vt_stack_adjustments(), and walk_dominator_tree().
| #define n_basic_blocks_for_function | ( | FN | ) | ((FN)->cfg->x_n_basic_blocks) |
Definition at line 396 of file basic-block.h.
Definition at line 409 of file basic-block.h.
Referenced by analyze_insns_in_loop(), clear_edges(), delete_null_pointer_checks(), dump_cfg_stats(), dump_flow_info(), dump_tree_cfg(), fix_irreducible_loops(), free_basic_block_vars(), free_edge(), Freq_Order_Blocks(), gcse_main(), Init_Edges(), init_flow(), is_too_expensive(), unchecked_make_edge(), unloop(), and variable_tracking_main().
| #define n_edges_for_function | ( | FN | ) | ((FN)->cfg->x_n_edges) |
Definition at line 397 of file basic-block.h.
Definition at line 576 of file basic-block.h.
| #define NUM_FIXED_BLOCKS (2) |
Definition at line 476 of file basic-block.h.
Referenced by blocks_in_phiopt_order(), bsi_last(), bsi_start(), build_tree_cfg(), bypass_jumps(), collect_dfa_stats(), compact_blocks(), compute_antinout_edge(), compute_available(), compute_branch_probabilities(), compute_defs_uses_and_gen(), compute_kill(), compute_laterin(), compute_out(), compute_rvuse_and_antic_safe(), count_basic_blocks(), df_bb_refs_record(), df_compact_blocks(), duplicate_computed_gotos(), entry_of_function(), find_basic_blocks(), find_if_case_2(), fixup_reorder_chain(), flow_loops_cfg_dump(), flow_loops_find(), global_alloc(), gmalloc(), ignore_bb_p(), init_empty_tree_cfg(), init_reassoc(), label_to_block_fn(), link_btr_uses(), make_edges(), migrate_btr_defs(), partition_hot_cold_basic_blocks(), pre_and_rev_post_order_compute(), predict_loops(), predict_paths_leading_to(), print_loop_ir(), regno_clobbered_at_setjmp(), reorder_basic_blocks(), rtl_flow_call_edges_add(), rtl_verify_flow_info(), schedule_ebbs(), set_up_bb_rts_numbers(), thread_prologue_and_epilogue_insns(), tracer(), tree_flow_call_edges_add(), tree_ssa_phiopt(), try_forward_edges(), try_optimize_cfg(), and vt_find_locations().
| #define profile_status (cfun->cfg->x_profile_status) |
Definition at line 412 of file basic-block.h.
| #define PROP_ALLOW_CFG_CHANGES 32 |
Definition at line 805 of file basic-block.h.
| #define PROP_ASM_SCAN 256 |
Definition at line 809 of file basic-block.h.
| #define PROP_AUTOINC 64 |
Definition at line 807 of file basic-block.h.
| #define PROP_DEAD_INSN 1024 |
| #define PROP_DEATH_NOTES 1 |
Definition at line 800 of file basic-block.h.
| #define PROP_FINAL |
Value:
(PROP_DEATH_NOTES | PROP_LOG_LINKS \ | PROP_REG_INFO | PROP_KILL_DEAD_CODE \ | PROP_SCAN_DEAD_CODE | PROP_AUTOINC \ | PROP_ALLOW_CFG_CHANGES \ | PROP_SCAN_DEAD_STORES)
Definition at line 816 of file basic-block.h.
| #define PROP_KILL_DEAD_CODE 8 |
Definition at line 803 of file basic-block.h.
| #define PROP_LOG_LINKS 2 |
Definition at line 801 of file basic-block.h.
| #define PROP_POST_REGSTACK 2048 |
Definition at line 813 of file basic-block.h.
Referenced by mark_set_1(), mark_used_reg(), struct_equiv_init(), and update_life_info().
| #define PROP_POSTRELOAD |
Value:
Definition at line 821 of file basic-block.h.
| #define PROP_REG_INFO 4 |
Definition at line 802 of file basic-block.h.
| #define PROP_SCAN_DEAD_CODE 16 |
Definition at line 804 of file basic-block.h.
| #define PROP_SCAN_DEAD_STORES 128 |
Definition at line 808 of file basic-block.h.
| #define REG_BASIC_BLOCK | ( | N | ) | (VEC_index (reg_info_p, reg_n_info, N)->basic_block) |
Definition at line 463 of file basic-block.h.
| #define REG_BLOCK_GLOBAL -2 |
Definition at line 461 of file basic-block.h.
| #define REG_BLOCK_UNKNOWN -1 |
Definition at line 460 of file basic-block.h.
| #define REG_BR_PROB_BASE 10000 |
Definition at line 558 of file basic-block.h.
| #define REG_SET_TO_HARD_REG_SET | ( | TO, | |||
| FROM | ) |
Value:
do { \ CLEAR_HARD_REG_SET (TO); \ reg_set_to_hard_reg_set (&TO, FROM); \ } while (0)
Definition at line 85 of file basic-block.h.
| #define REGNO_REG_SET_P | ( | TO, | |||
| REG | ) | bitmap_bit_p (TO, REG) |
Definition at line 81 of file basic-block.h.
| #define SET_BASIC_BLOCK | ( | N, | |||
| BB | ) | (VEC_replace (basic_block, basic_block_info, (N), (BB))) |
Definition at line 415 of file basic-block.h.
Referenced by compact_blocks(), create_basic_block_structure(), create_bb(), df_bb_replace(), df_compact_blocks(), expunge_block(), find_basic_blocks(), find_if_case_1(), fixup_reorder_chain(), and init_empty_tree_cfg().
Definition at line 480 of file basic-block.h.
| #define SET_REGNO_REG_SET | ( | HEAD, | |||
| REG | ) | bitmap_set_bit (HEAD, REG) |
Definition at line 78 of file basic-block.h.
| #define STRUCT_EQUIV_FINAL 1024 |
Definition at line 843 of file basic-block.h.
Referenced by struct_equiv_block_eq(), and struct_equiv_improve_checkpoint().
| #define STRUCT_EQUIV_MATCH_JUMPS 4096 |
| #define STRUCT_EQUIV_MAX_LOCAL 16 |
Definition at line 1002 of file basic-block.h.
Referenced by resolve_input_conflict(), and rtx_equiv_p().
| #define STRUCT_EQUIV_NEED_FULL_BLOCK 2048 |
| #define STRUCT_EQUIV_RERUN 512 |
Definition at line 841 of file basic-block.h.
| #define STRUCT_EQUIV_START 256 |
Definition at line 840 of file basic-block.h.
Referenced by condjump_equiv_p(), struct_equiv_block_eq(), and struct_equiv_init().
| #define XOR_REG_SET | ( | TO, | |||
| FROM | ) | bitmap_xor_into (TO, FROM) |
Definition at line 68 of file basic-block.h.
| typedef struct basic_block_def* basic_block |
Definition at line 283 of file basic-block.h.
| typedef struct ce_if_block ce_if_block_t |
| typedef struct conflict_graph_def* conflict_graph |
Definition at line 924 of file basic-block.h.
| typedef int(* conflict_graph_enum_fn)(int, int, void *) |
Definition at line 929 of file basic-block.h.
Definition at line 146 of file basic-block.h.
| typedef HOST_WIDEST_INT gcov_type |
Definition at line 115 of file basic-block.h.
| typedef bitmap_iterator reg_set_iterator |
Definition at line 91 of file basic-block.h.
Definition at line 38 of file basic-block.h.
| typedef bitmap_head regset_head |
Definition at line 35 of file basic-block.h.
| enum bb_flags |
Definition at line 299 of file basic-block.h.
| enum cdi_direction |
| CDI_DOMINATORS | |
| CDI_POST_DOMINATORS | |
| CDI_DOMINATORS | |
| CDI_POST_DOMINATORS | |
| CDI_DOMINATORS | |
| CDI_POST_DOMINATORS | |
| CDI_DOMINATORS | |
| CDI_POST_DOMINATORS |
Definition at line 956 of file basic-block.h.
| enum dom_state |
Definition at line 962 of file basic-block.h.
| enum update_life_extent |
Definition at line 791 of file basic-block.h.
Definition at line 702 of file cfganal.c.
References EDGE_COUNT, EDGE_FAKE, EXIT_BLOCK_PTR, FOR_EACH_BB, make_single_succ_edge(), NULL, and basic_block_def::succ.
Referenced by branch_prob(), note_prediction_to_br_prob(), one_pre_gcse_pass(), see_execute_LCM(), store_motion(), tree_estimate_probability(), and try_optimize_cfg().
| void add_to_dominance_info | ( | enum | cdi_direction, | |
| basic_block | ||||
| ) |
Definition at line 929 of file dominance.c.
References dom_computed, DOM_NO_FAST_QUERY, DOM_OK, et_new_tree(), gcc_assert, and n_bbs_in_dom_tree.
| void alloc_aux_for_block | ( | basic_block | , | |
| int | ||||
| ) | [inline] |
Definition at line 719 of file cfg.c.
References abort, basic_block_def::aux, block_aux_obstack, first_block_aux_obj, gcc_assert, memset, and obstack_alloc.
Referenced by alloc_aux_for_blocks(), canonicalize_loop_headers(), cfg_layout_duplicate_bb(), fixup_reorder_chain(), redirect_edge_with_latch_update(), and update_latch_info().
| void alloc_aux_for_blocks | ( | int | ) |
Definition at line 734 of file cfg.c.
References abort, alloc_aux_for_block(), block_aux_obstack, ENTRY_BLOCK_PTR, first_block_aux_obj, FOR_BB_BETWEEN, gcc_assert, gcc_obstack_init, initialized, NULL, and obstack_alloc.
Referenced by allocate_bb_info(), canonicalize_loop_headers(), cfg_layout_initialize(), compute_branch_probabilities(), estimate_bb_frequencies(), and vt_initialize().
Definition at line 790 of file cfg.c.
References abort, edge_aux_obstack, first_edge_aux_obj, gcc_assert, memset, and obstack_alloc.
Referenced by alloc_aux_for_edges(), canonicalize_loop_headers(), make_forwarder_block(), redirect_edge_with_latch_update(), and update_latch_info().
| void alloc_aux_for_edges | ( | int | ) |
Definition at line 805 of file cfg.c.
References abort, alloc_aux_for_edge(), edge_aux_obstack, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, first_edge_aux_obj, FOR_BB_BETWEEN, FOR_EACH_EDGE, gcc_assert, gcc_obstack_init, initialized, obstack_alloc, basic_block_def::succ, and edge::succ_next.
Referenced by branch_prob(), canonicalize_loop_headers(), and estimate_bb_frequencies().
| basic_block alloc_block | ( | void | ) |
Definition at line 224 of file cfg.c.
References flow_obstack, ggc_alloc_cleared, memset, NULL, obstack_alloc, and basic_block_def::succ.
Referenced by create_basic_block_structure(), create_bb(), and lower_merge().
Definition at line 1522 of file flow.c.
References allocate_reg_info(), FALSE, gcc_assert, i, max_reg_num(), max_regno, REG_BASIC_BLOCK, REG_BLOCK_UNKNOWN, reg_deaths, REG_FREQ, REG_LIVE_LENGTH, REG_N_CALLS_CROSSED, REG_N_DEATHS, REG_N_REFS, REG_N_SETS, REG_N_THROWING_CALLS_CROSSED, xcalloc(), and XCNEWVEC.
Referenced by life_analysis(), recompute_reg_usage(), rest_of_compilation(), rest_of_handle_life(), rest_of_handle_partition_blocks(), and schedule_ebbs().
| unsigned bb_dom_dfs_in | ( | enum | cdi_direction, | |
| basic_block | ||||
| ) |
Definition at line 915 of file dominance.c.
References et_node::dfs_num_in, dom_computed, DOM_OK, gcc_assert, and n.
Referenced by prune_unused_phi_nodes().
| unsigned bb_dom_dfs_out | ( | enum | cdi_direction, | |
| basic_block | ||||
| ) |
Definition at line 926 of file dominance.c.
References et_node::dfs_num_out, dom_computed, DOM_OK, gcc_assert, and n.
Referenced by prune_unused_phi_nodes().
| static bool bb_has_eh_pred | ( | basic_block | bb | ) | [inline, static] |
Definition at line 1161 of file basic-block.h.
Referenced by global_conflicts(), and propagate_block().
| rtx block_label | ( | basic_block | ) |
Definition at line 658 of file cfgrtl.c.
References BB_HEAD, emit_label_before(), EXIT_BLOCK_PTR, gen_label_rtx(), GET_CODE, LABEL_P, and NULL_RTX.
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().
Definition at line 217 of file predict.c.
References gcc_assert, INTVAL, probability_reliable_p(), REG_BR_PROB, REG_NOTE_KIND, and XEXP.
Referenced by ia64_print_operand(), and output_cbranch().
Definition at line 1152 of file cfglayout.c.
References BB_SUPERBLOCK, find_many_sub_basic_blocks(), basic_block_def::flags, FOR_EACH_BB, free(), get_insns(), basic_block_def::index, last_basic_block, rebuild_jump_labels(), sbitmap_alloc(), sbitmap_zero(), and SET_BIT.
| edge cached_make_edge | ( | sbitmap | , | |
| basic_block | , | |||
| basic_block | , | |||
| int | ||||
| ) |
Definition at line 285 of file cfg.c.
References ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, find_edge(), edge::flags, basic_block_def::index, make_edge(), NULL, SET_BIT, TEST_BIT, and unchecked_make_edge().
| void calculate_dominance_info | ( | enum | cdi_direction | ) |
Definition at line 558 of file dominance.c.
References b, calc_dfs_tree(), calc_idoms(), compute_dom_fast_query(), d, dom_info::dfs_order, dom_info::dfs_to_bb, dom_info::dom, dom_computed, dom_info_available_p(), DOM_NO_FAST_QUERY, DOM_OK, ENTRY_BLOCK_PTR, et_forest_add_edge(), et_forest_add_node(), et_forest_create(), et_new_tree(), et_set_father(), EXIT_BLOCK_PTR, FOR_ALL_BB, FOR_EACH_BB, free_dom_info(), gcc_assert, basic_block_def::index, info, init_dom_info(), last_basic_block, n_basic_blocks, n_bbs_in_dom_tree, SET_BB_NODE, timevar_pop, timevar_push, VARRAY_GENERIC_PTR_INIT, and xmalloc().
Referenced by branch_target_load_optimize(), build_omp_regions(), canonicalize_loop_headers(), cleanup_tree_cfg_loop(), compute_code_hoist_data(), convert_to_ssa(), eliminate_degenerate_phis(), estimate_probability(), execute_cse_reciprocals(), execute_optimize_stdarg(), execute_sink_code(), finalize_jump_threads(), flow_loops_find(), identify_jump_threads(), if_convert(), if_convertible_loop_p(), init_pre(), init_reassoc(), insert_range_assertions(), mark_def_site_blocks(), merge_phi_nodes(), move_sese_region_to_fn(), note_prediction_to_br_prob(), perform_tree_ssa_dce(), rewrite_def_def_chains(), rewrite_into_ssa(), rewrite_ssa_into_ssa(), ssa_eliminate_dead_code(), tree_estimate_probability(), tree_ssa_dominator_optimize(), tree_ssa_dse(), tree_ssa_uncprop(), update_ssa(), and verify_ssa().
| bool can_fallthru | ( | basic_block | , | |
| basic_block | ||||
| ) |
Definition at line 107 of file cfganal.c.
References active_insn_p(), BB_END, BB_HEAD, edge::dest, EDGE_FALLTHRU, EXIT_BLOCK_PTR, edge::flags, FOR_EACH_EDGE, insn, next_active_insn(), and basic_block_def::next_bb.
Referenced by expand_gimple_basic_block(), fixup_reorder_chain(), try_redirect_by_replacing_jump(), and try_simplify_condjump().
| void check_bb_profile | ( | basic_block | , | |
| FILE * | ||||
| ) |
Definition at line 466 of file cfg.c.
References abs, basic_block_def::count, EDGE_COUNT, EDGE_FREQUENCY, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, FOR_EACH_EDGE, fprintf(), basic_block_def::frequency, PROFILE_ABSENT, and REG_BR_PROB_BASE.
| bool cleanup_cfg | ( | int | ) |
Definition at line 1798 of file cfgcleanup.c.
References changed, CLEANUP_EXPENSIVE, CLEANUP_LOG_LINKS, CLEANUP_NO_INSN_DEL, CLEANUP_PRE_SIBCALL, CLEANUP_UPDATE_LIFE, compact_blocks(), delete_dead_jumptables(), delete_trivially_dead_insns(), delete_unreachable_blocks(), free_EXPR_LIST_list(), get_insns(), label_value_list, max_reg_num(), PROP_DEATH_NOTES, PROP_KILL_DEAD_CODE, PROP_LOG_LINKS, PROP_SCAN_DEAD_CODE, reload_completed, timevar_pop, timevar_push, try_optimize_cfg(), UPDATE_LIFE_GLOBAL_RM_NOTES, and update_life_info_in_dirty_blocks().
Referenced by branch_prob(), branch_target_load_optimize(), cfg_layout_initialize(), finish_eh_generation(), optimize_sibling_and_tail_recursive_calls(), reg_alloc(), rest_of_compilation(), rest_of_handle_cfg(), rest_of_handle_combine(), rest_of_handle_cse(), rest_of_handle_cse2(), rest_of_handle_eh(), rest_of_handle_flow2(), rest_of_handle_gcse(), 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_regmove(), rest_of_handle_reorder_blocks(), rest_of_handle_sched2(), rest_of_handle_see(), rest_of_handle_stack_adjustments(), rest_of_handle_stack_regs(), rest_of_handle_tracer(), rest_of_handle_value_profile_transformations(), rest_of_handle_web(), rest_of_rtl_seqabstr(), rtl_loop_done(), rtl_seqabstr(), tracer(), and update_life_info().
Definition at line 761 of file cfg.c.
References basic_block_def::aux, ENTRY_BLOCK_PTR, FOR_BB_BETWEEN, and NULL.
Referenced by compute_antinout_edge(), compute_available(), find_basic_blocks_1(), free_aux_for_blocks(), if_convert(), and try_optimize_cfg().
Definition at line 838 of file cfg.c.
References ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, FOR_BB_BETWEEN, FOR_EACH_EDGE, NULL, basic_block_def::succ, and edge::succ_next.
Referenced by compute_antinout_edge(), compute_available(), compute_laterin(), compute_nearerout(), and free_aux_for_edges().
Definition at line 517 of file cfg.c.
References BB_DISABLE_SCHEDULE, BB_PARTITION, BB_RTL, ENTRY_BLOCK_PTR, basic_block_def::flags, FOR_BB_BETWEEN, basic_block_def::next_bb, and NULL.
Referenced by combine_instructions(), if_convert(), and try_optimize_cfg().
Definition at line 184 of file cfg.c.
References abort, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, FOR_EACH_BB, FOR_EACH_EDGE, free_edge(), gcc_assert, n_edges, next, NULL, basic_block_def::pred, basic_block_def::succ, edge::succ_next, and VEC_truncate.
Referenced by find_basic_blocks(), and free_basic_block_vars().
Definition at line 1499 of file cfgrtl.c.
References basic_block_def::aux, blocks, changed, commit_one_edge_insertion(), ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, find_many_sub_basic_blocks(), FOR_BB_BETWEEN, FOR_EACH_BB, FOR_EACH_EDGE, gcc_assert, basic_block_def::index, last_basic_block, next, NULL, sbitmap_alloc(), sbitmap_free, sbitmap_zero(), SET_BIT, basic_block_def::succ, edge::succ_next, and verify_flow_info().
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 1543 of file cfgrtl.c.
References basic_block_def::aux, blocks, changed, commit_one_edge_insertion(), ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, find_many_sub_basic_blocks(), FOR_BB_BETWEEN, FOR_EACH_BB, FOR_EACH_EDGE, gcc_assert, basic_block_def::index, last_basic_block, next, NULL, sbitmap_alloc(), sbitmap_free, sbitmap_zero(), SET_BIT, basic_block_def::succ, edge::succ_next, and verify_flow_info().
Referenced by branch_prob(), and instrument_edges().
Definition at line 264 of file cfg.c.
References abort, BASIC_BLOCK, ENTRY_BLOCK, ENTRY_BLOCK_PTR, EXIT_BLOCK, EXIT_BLOCK_PTR, FOR_EACH_BB, gcc_assert, i, basic_block_def::index, last_basic_block, n_basic_blocks, NULL, NUM_FIXED_BLOCKS, and SET_BASIC_BLOCK.
Referenced by branch_prob(), cleanup_cfg(), cleanup_tree_cfg(), make_accurate_live_analysis(), optimize_inline_calls(), tree_expand_cfg(), and tree_lowering_passes().
Definition at line 491 of file lcm.c.
References basic_block_def::aux, clear_aux_for_blocks(), clear_aux_for_edges(), edge::dest, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, FOR_EACH_BB, FOR_EACH_EDGE, free(), basic_block_def::index, last_basic_block, n_basic_blocks, NULL, NUM_FIXED_BLOCKS, sbitmap_intersection_of_preds(), sbitmap_union_of_diff_cg(), sbitmap_vector_ones(), sbitmap_zero(), basic_block_def::succ, edge::succ_next, worklist, xmalloc(), and XNEWVEC.
Referenced by compute_cprop_data(), delete_null_pointer_checks_1(), one_classic_gcse_pass(), pre_edge_lcm(), and pre_edge_rev_lcm().
Definition at line 439 of file cfgrtl.c.
References BB_END, BB_HEAD, BLOCK_FOR_INSN, basic_block_def::end, end, FOR_EACH_BB, basic_block_def::head, insn, and NEXT_INSN.
Referenced by frv_optimize_membar(), ia64_reorg(), init_ra(), m68hc11_reorg(), reg_alloc(), and schedule_ebbs().
Definition at line 995 of file cfganal.c.
References compute_dominance_frontiers_1(), timevar_pop, and timevar_push.
| bool condjump_equiv_p | ( | struct equiv_info * | , | |
| bool | ||||
| ) |
Definition at line 1165 of file cfgcleanup.c.
References abs, BB_END, BRANCH_EDGE, cancel_changes(), edge::dest, dump_file, f1, f2, FALLTHRU_EDGE, FORWARDER_BLOCK_P, fprintf(), gcc_unreachable, GET_CODE, basic_block_def::index, insns_match_p(), maybe_hot_bb_p(), equiv_info::mode, optimize_size, pc_rtx, pc_set(), REG_BR_PROB_BASE, reversed_comparison_code(), rtx_equiv_p(), SET_SRC, single_succ_edge(), struct_equiv_init(), STRUCT_EQUIV_START, swap_condition(), UNKNOWN, verify_changes(), equiv_info::x_block, XEXP, and equiv_info::y_block.
Referenced by struct_equiv_block_eq().
| int conflict_graph_add | ( | conflict_graph | , | |
| int | , | |||
| int | ||||
| ) |
Definition at line 190 of file conflict.c.
References abort, conflict_graph_def::arc_hash_table, conflict_graph_def::arc_obstack, gcc_assert, htab_find_slot(), INSERT, conflict_graph_arc_def::larger, conflict_graph_arc_def::larger_next, MAX, MIN, conflict_graph_def::neighbor_heads, NULL, obstack_alloc, and conflict_graph_arc_def::smaller.
Referenced by add_conflicts_if_valid(), build_tree_conflict_graph(), conflict_graph_compute(), and conflict_graph_merge_regs().
| int conflict_graph_conflict_p | ( | conflict_graph | , | |
| int | , | |||
| int | ||||
| ) |
Definition at line 239 of file conflict.c.
References conflict_graph_def::arc_hash_table, htab_find(), conflict_graph_arc_def::larger, MAX, MIN, NULL, and conflict_graph_arc_def::smaller.
Referenced by coalesce_abnormal_edges(), coalesce_if_unconflicting(), and coalesce_tpa_members().
| void conflict_graph_delete | ( | conflict_graph | ) |
Definition at line 176 of file conflict.c.
References conflict_graph_def::arc_hash_table, conflict_graph_def::arc_obstack, free(), htab_delete(), conflict_graph_def::neighbor_heads, NULL, and obstack_free.
Referenced by coalesce_ssa_name(), and compute_coalesced_reg_partition().
| void conflict_graph_enum | ( | conflict_graph | , | |
| int | , | |||
| conflict_graph_enum_fn | , | |||
| void * | ||||
| ) |
Definition at line 256 of file conflict.c.
References conflict_graph_arc_def::larger, conflict_graph_arc_def::larger_next, conflict_graph_def::neighbor_heads, NULL, conflict_graph_arc_def::smaller, and conflict_graph_arc_def::smaller_next.
Referenced by conflict_graph_print().
| void conflict_graph_merge_regs | ( | conflict_graph | , | |
| int | , | |||
| int | ||||
| ) |
Definition at line 283 of file conflict.c.
References conflict_graph_add(), conflict_graph_arc_def::larger, conflict_graph_arc_def::larger_next, conflict_graph_def::neighbor_heads, NULL, conflict_graph_arc_def::smaller, and conflict_graph_arc_def::smaller_next.
Referenced by coalesce_abnormal_edges(), coalesce_if_unconflicting(), and coalesce_tpa_members().
| conflict_graph conflict_graph_new | ( | int | ) |
Definition at line 150 of file conflict.c.
References arc_eq(), arc_hash(), conflict_graph_def::arc_hash_table, conflict_graph_def::arc_obstack, htab_create(), INITIAL_ARC_CAPACITY, memset, conflict_graph_def::neighbor_heads, NULL, conflict_graph_def::num_regs, obstack_init, xcalloc(), XCNEWVEC, xmalloc(), and XNEW.
Referenced by build_tree_conflict_graph(), and conflict_graph_compute().
| void conflict_graph_print | ( | conflict_graph | , | |
| FILE * | ||||
| ) |
Definition at line 364 of file conflict.c.
References conflict_graph_enum(), print_context::fp, fprintf(), fputc(), conflict_graph_def::num_regs, print_conflict(), print_context::reg, and print_context::started.
Definition at line 723 of file cfganal.c.
References EDGE_FAKE, EXIT_BLOCK_PTR, flow_dfs_compute_reverse_add_bb(), flow_dfs_compute_reverse_execute(), flow_dfs_compute_reverse_finish(), flow_dfs_compute_reverse_init(), and make_edge().
Referenced by estimate_probability(), execute_sink_code(), init_pre(), note_prediction_to_br_prob(), ssa_eliminate_dead_code(), store_motion(), and tree_estimate_probability().
Definition at line 108 of file cfgbuild.c.
References abort, can_throw_internal(), const1_rtx, find_reg_note(), flag_non_call_exceptions, gcc_unreachable, GET_CODE, INTVAL, nonlocal_goto_handler_labels, NULL_RTX, PATTERN, REG_EH_REGION, REG_NORETURN, SIBLING_CALL_P, and XEXP.
Referenced by add_deps_for_risky_insns(), advance_target_bb(), begin_schedule_ready(), count_basic_blocks(), emit_libcall_block(), find_basic_blocks_1(), find_bb_boundaries(), fix_basic_block_boundaries(), maybe_encapsulate_block(), rtl_verify_flow_info_1(), and sched_analyze_insn().
| bool could_fall_through | ( | basic_block | , | |
| basic_block | ||||
| ) |
Definition at line 133 of file cfganal.c.
References edge::dest, EDGE_FALLTHRU, EXIT_BLOCK_PTR, edge::flags, and FOR_EACH_EDGE.
| int count_or_remove_death_notes | ( | sbitmap | , | |
| int | ||||
| ) |
Definition at line 4292 of file flow.c.
References BASIC_BLOCK, count, count_or_remove_death_notes_bb(), basic_block_def::end, EXECUTE_IF_SET_IN_SBITMAP, FIRST_PSEUDO_REGISTER, FOR_EACH_BB, FOR_EACH_BB_REVERSE, free_EXPR_LIST_node(), GET_CODE, GET_MODE, HARD_REGNO_NREGS, basic_block_def::head, i, basic_block_def::index, INSN_P, n, next, NEXT_INSN, REG, REG_DEAD, REG_NOTE_KIND, REG_NOTES, REG_UNUSED, REGNO, TEST_BIT, and XEXP.
Referenced by convert_from_ssa(), reg_alloc(), regrename_optimize(), rest_of_compilation(), rest_of_handle_remove_death_notes(), rest_of_handle_sched2(), rtl_seqabstr(), and update_life_info().
| basic_block create_basic_block_structure | ( | rtx | , | |
| rtx | , | |||
| rtx | , | |||
| basic_block | ||||
| ) |
Definition at line 258 of file cfgrtl.c.
References alloc_block(), basic_block_def::aux, BASIC_BLOCK, BB_END, BB_HEAD, BB_NEW, BB_RTL, BB_SET_PARTITION, BB_UNPARTITIONED, emit_note_after(), emit_note_before(), basic_block_def::end, basic_block_def::flags, GET_CODE, get_last_insn(), basic_block_def::head, basic_block_def::index, init_rtl_bb_info(), LABEL_P, last_basic_block, link_block(), NEXT_INSN, NOTE_BASIC_BLOCK, NOTE_INSN_BASIC_BLOCK, NULL, PREV_INSN, reorder_insns_nobb(), RTX_INTEGRATED_P, SET_BASIC_BLOCK, and update_bb_for_insn().
Referenced by create_basic_block(), find_basic_blocks_1(), and rtl_create_basic_block().
Definition at line 462 of file cfganal.c.
References EDGE_COUNT, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, FOR_BB_BETWEEN, FOR_EACH_EDGE, edge_list::index_to_edge, n_basic_blocks, edge_list::num_blocks, edge_list::num_edges, basic_block_def::succ, edge::succ_next, xmalloc(), XNEW, and XNEWVEC.
Referenced by branch_prob(), perform_tree_ssa_dce(), pre_edge_lcm(), pre_edge_rev_lcm(), ssa_const_prop(), and ssa_eliminate_dead_code().
| void debug_bb | ( | basic_block | ) |
| basic_block debug_bb_n | ( | int | ) |
| DEF_VEC_ALLOC_P | ( | basic_block | , | |
| heap | ||||
| ) |
| DEF_VEC_ALLOC_P | ( | basic_block | , | |
| gc | ||||
| ) |
| DEF_VEC_ALLOC_P | ( | edge | , | |
| gc | ||||
| ) |
| DEF_VEC_P | ( | basic_block | ) |
| DEF_VEC_P | ( | edge | ) |
| void delete_from_dominance_info | ( | enum | cdi_direction, | |
| basic_block | ||||
| ) |
Definition at line 943 of file dominance.c.
References dom_computed, DOM_NO_FAST_QUERY, DOM_OK, et_free_tree(), gcc_assert, n_bbs_in_dom_tree, and NULL.
| int delete_noop_moves | ( | void | ) |
Definition at line 773 of file flow.c.
References BB_END, BB_HEAD, delete_insn_and_edges(), dump_file, find_reg_note(), FOR_EACH_BB, fprintf(), gen_rtx_INSN_LIST, insn, INSN_P, next, NEXT_INSN, next_real_insn(), noop_move_p(), NULL_RTX, REG_LIBCALL, REG_NOTES, REG_RETVAL, and XEXP.
Definition at line 1770 of file cfgcleanup.c.
References b, BB_REACHABLE, changed, delete_basic_block(), ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, find_unreachable_blocks(), basic_block_def::flags, flow_delete_block(), basic_block_def::next_bb, and tidy_fallthru_edges().
Referenced by cleanup_cfg(), cleanup_tree_cfg(), cleanup_tree_cfg_1(), df_analyze(), local_cprop_pass(), one_cprop_pass(), rest_of_compilation(), rest_of_handle_cse(), rest_of_handle_jump(), rest_of_handle_local_alloc(), and rest_of_handle_old_regalloc().
| int dfs_enumerate_from | ( | basic_block | , | |
| int | , | |||
| bool(*)(basic_block, void *) | , | |||
| basic_block * | , | |||
| int | , | |||
| void * | ||||
| ) |
Definition at line 897 of file cfganal.c.
References BB_VISITED, edge::dest, basic_block_def::flags, flags, FOR_EACH_EDGE, free(), gcc_assert, last_basic_block, MARK_VISITED, sbitmap_alloc(), sbitmap_resize(), sbitmap_zero(), size, sp, edge::src, UNMARK_VISITED, visited, VISITED_P, xcalloc(), and XCNEWVEC.
| bool dom_info_available_p | ( | enum | cdi_direction | ) |
| bool dominated_by_p | ( | enum | cdi_direction, | |
| basic_block | , | |||
| basic_block | ||||
| ) |
Definition at line 802 of file dominance.c.
References et_node::dfs_num_in, et_node::dfs_num_out, dom_computed, DOM_OK, et_below(), and gcc_assert.
| void dump_bb_info | ( | basic_block | , | |
| bool | , | |||
| bool | , | |||
| int | , | |||
| const char * | , | |||
| FILE * | ||||
| ) |
Definition at line 477 of file cfg.c.
References BB_RTL, basic_block_def::count, dump_edge_info(), dump_regset(), basic_block_def::flags, FOR_EACH_EDGE, fprintf(), basic_block_def::frequency, basic_block_def::global_live_at_end, basic_block_def::global_live_at_start, HOST_WIDEST_INT_PRINT_DEC, basic_block_def::index, basic_block_def::loop_depth, maybe_hot_bb_p(), basic_block_def::next_bb, basic_block_def::prev_bb, probably_never_executed_bb_p(), putc(), and TDF_DETAILS.
Referenced by dump_flow_info(), and print_rtl_slim_with_bb().
Definition at line 656 of file cfg.c.
References ARRAY_SIZE, comma, edge::dest, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, edge::flags, flags, fprintf(), fputc(), fputs(), HOST_WIDEST_INT_PRINT_DEC, i, basic_block_def::index, REG_BR_PROB_BASE, and edge::src.
Referenced by dump_asserts_for(), dump_bb(), dump_bb_end(), dump_bb_header(), dump_bb_info(), dump_cfg_bb_info(), dump_flow_info(), and verify_flow_info().
Definition at line 4227 of file flow.c.
References EXECUTE_IF_SET_IN_REG_SET, FIRST_PSEUDO_REGISTER, fprintf(), fputs(), i, NULL, and reg_names.
Referenced by debug_regset(), dump_bb(), dump_bb_info(), dump_flow_info(), print_rtl_with_bb(), and rtl_dump_bb().
| static bool ei_cond | ( | edge_iterator | ei, | |
| edge * | p | |||
| ) | [inline, static] |
| static edge ei_edge | ( | edge_iterator | i | ) | [inline, static] |
Definition at line 730 of file basic-block.h.
| static bool ei_end_p | ( | edge_iterator | i | ) | [inline, static] |
Definition at line 699 of file basic-block.h.
| static edge_iterator ei_last_1 | ( | VEC(edge, gc)** | ev | ) | [inline, static] |
Definition at line 687 of file basic-block.h.
| static void ei_next | ( | edge_iterator * | i | ) | [inline, static] |
Definition at line 714 of file basic-block.h.
| static bool ei_one_before_end_p | ( | edge_iterator | i | ) | [inline, static] |
Definition at line 707 of file basic-block.h.
| static void ei_prev | ( | edge_iterator * | i | ) | [inline, static] |
Definition at line 722 of file basic-block.h.
| static edge ei_safe_edge | ( | edge_iterator | i | ) | [inline, static] |
Definition at line 739 of file basic-block.h.
| static edge_iterator ei_start_1 | ( | VEC(edge, gc)** | ev | ) | [inline, static] |
Definition at line 674 of file basic-block.h.
Definition at line 653 of file predict.c.
References abort, any_condjump_p(), canonicalize_condition(), cond, const0_rtx, delete_insn(), gcc_assert, gen_rtx_fmt_ee(), GET_CODE, get_insns(), insn, JUMP_P, NEXT_INSN, NOT_TAKEN, NOTE_EXPECTED_VALUE, NOTE_INSN_EXPECTED_VALUE, NOTE_LINE_NUMBER, NULL, NULL_RTX, pc_set(), predict_insn_def(), reg_set_p(), SET_SRC, simplify_rtx(), TAKEN, and XEXP.
Referenced by rest_of_compilation(), and rest_of_handle_jump2().
| void expunge_block | ( | basic_block | ) |
Definition at line 287 of file cfg.c.
References BASIC_BLOCK, basic_block_def::index, memset, n_basic_blocks, NULL, SET_BASIC_BLOCK, and unlink_block().
Referenced by combine_blocks(), delete_basic_block(), flow_delete_block(), merge_blocks(), and merge_blocks_nomove().
Definition at line 488 of file cfgbuild.c.
References basic_block_def::aux, basic_block_info, BLOCK_NEW, clear_edges(), count_basic_blocks(), ENTRY_BLOCK, ENTRY_BLOCK_PTR, EXIT_BLOCK, EXIT_BLOCK_PTR, find_basic_blocks_1(), FOR_EACH_BB, last_basic_block, make_edges(), memset, n_basic_blocks, NULL, NUM_FIXED_BLOCKS, PROFILE_ABSENT, SET_BASIC_BLOCK, SET_STATE, tidy_fallthru_edges(), timevar_pop, timevar_push, VARRAY_BB_INIT, VEC_address, VEC_alloc, VEC_safe_grow, and verify_flow_info().
| edge find_edge | ( | basic_block | , | |
| basic_block | ||||
| ) |
Definition at line 482 of file cfganal.c.
References edge::dest, EDGE_COUNT, FOR_EACH_EDGE, NULL, and edge::src.
| int find_edge_index | ( | struct edge_list * | , | |
| basic_block | , | |||
| basic_block | ||||
| ) |
Definition at line 609 of file cfganal.c.
References EDGE_INDEX_NO_EDGE, INDEX_EDGE_PRED_BB, INDEX_EDGE_SUCC_BB, NUM_EDGES, and x.
Definition at line 785 of file cfgbuild.c.
References BLOCK_NEW, BLOCK_ORIGINAL, BLOCK_TO_SPLIT, compute_outgoing_frequencies(), basic_block_def::count, EDGE_FREQUENCY, EXIT_BLOCK_PTR, find_bb_boundaries(), FOR_BB_BETWEEN, FOR_EACH_BB, FOR_EACH_EDGE, basic_block_def::frequency, basic_block_def::index, make_edges(), max, min, basic_block_def::next_bb, NULL, basic_block_def::pred, edge::pred_next, PROFILE_ABSENT, SET_STATE, and TEST_BIT.
Referenced by break_superblocks(), commit_edge_insertions(), commit_edge_insertions_watch_calls(), fixup_abnormal_edges(), split_all_insns(), and tree_expand_cfg().
Definition at line 406 of file cfganal.c.
References b, BB_REACHABLE, edge::dest, dest, ENTRY_BLOCK_PTR, basic_block_def::flags, FOR_EACH_BB, FOR_EACH_EDGE, free(), n_basic_blocks, basic_block_def::succ, edge::succ_next, tos, worklist, xmalloc(), and XNEWVEC.
Referenced by delete_unreachable_blocks(), and ssa_ccp_df_delete_unreachable_insns().
| basic_block first_dom_son | ( | enum | cdi_direction, | |
| basic_block | ||||
| ) |
| rtx first_insn_after_basic_block_note | ( | basic_block | ) |
Definition at line 399 of file flow.c.
References abort, BB_HEAD, gcc_assert, GET_CODE, insn, LABEL_P, NEXT_INSN, NOTE_INSN_BASIC_BLOCK_P, and NULL_RTX.
Referenced by eliminate_phi(), examine_flow_edges(), for_each_successor_phi(), insert_phi_node(), make_equivalent_phi_alternatives_equivalent(), make_forwarder_block(), make_regs_equivalent_over_bad_edges(), optimize_unexecutable_edges(), rename_block(), and rtl_split_block().
Definition at line 9468 of file reload1.c.
References abort, BB_END, BB_HEAD, blocks, CALL_P, can_throw_internal(), commit_edge_insertions(), delete_insn(), EDGE_ABNORMAL, EDGE_ABNORMAL_CALL, EDGE_EH, EDGE_FALLTHRU, basic_block_def::end, find_many_sub_basic_blocks(), flag_non_call_exceptions, edge::flags, FOR_EACH_BB, FOR_EACH_EDGE, gcc_assert, GET_CODE, basic_block_def::head, insert_insn_on_edge(), INSN_DELETED_P, INSN_P, last_basic_block, next, NEXT_INSN, NONJUMP_INSN_P, NOTE_P, NULL_RTX, PATTERN, PREV_INSN, purge_dead_edges(), sbitmap_alloc(), sbitmap_ones(), basic_block_def::succ, edge::succ_next, USE, and verify_flow_info().
Referenced by reg_alloc(), and reload().
| basic_block force_nonfallthru | ( | edge | ) |
Definition at line 1095 of file cfgrtl.c.
References edge::dest, and force_nonfallthru_and_redirect().
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().
| bool forwarder_block_p | ( | basic_block | ) |
Definition at line 86 of file cfganal.c.
References BB_END, BB_HEAD, EDGE_COUNT, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, flow_active_insn_p(), GET_CODE, insn, INSN_P, JUMP_P, NEXT_INSN, simplejump_p(), and single_succ_p().
Referenced by cleanup_unconditional_jumps(), find_if_case_1(), fixup_reorder_chain(), notice_new_block(), outgoing_edges_match(), try_forward_edges(), and update_forwarder_flag().
Definition at line 773 of file cfg.c.
References abort, block_aux_obstack, clear_aux_for_blocks(), first_block_aux_obj, gcc_assert, NULL, and obstack_free.
Referenced by canonicalize_loop_headers(), cfg_layout_finalize(), compute_branch_probabilities(), estimate_bb_frequencies(), free_bb_info(), and vt_finalize().
Definition at line 854 of file cfg.c.
References abort, clear_aux_for_edges(), edge_aux_obstack, first_edge_aux_obj, gcc_assert, NULL, and obstack_free.
Referenced by branch_prob(), canonicalize_loop_headers(), and estimate_bb_frequencies().
Definition at line 754 of file flow.c.
References basic_block_info, clear_edges(), ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, label_to_block_map, last_basic_block, n_basic_blocks, n_edges, and NULL.
| unsigned int free_bb_for_insn | ( | void | ) |
Definition at line 460 of file cfgrtl.c.
References BARRIER_P, BLOCK_FOR_INSN, GET_CODE, get_insns(), insn, NEXT_INSN, and NULL.
Referenced by rest_of_clean_state(), rest_of_compilation(), and rest_of_handle_loop_optimize().
| void free_dominance_info | ( | enum | cdi_direction | ) |
Definition at line 653 of file dominance.c.
References delete_from_dominance_info(), dom_computed, dom_info_available_p(), DOM_NONE, et_free_pools(), et_free_tree_force(), FOR_ALL_BB, gcc_assert, n_bbs_in_dom_tree, and NULL.
Definition at line 500 of file cfganal.c.
References free(), and edge_list::index_to_edge.
Referenced by branch_prob(), one_pre_gcse_pass(), perform_tree_ssa_dce(), see_free_data_structures(), ssa_const_prop(), and store_motion().
Definition at line 1063 of file cfg.c.
References bb_copy, bb_original, free_alloc_pool(), gcc_assert, htab_delete(), and NULL.
Referenced by cfg_layout_finalize(), tree_duplicate_sese_region(), tree_ssa_prefetch_arrays(), tree_unswitch_single_loop(), try_unroll_loop_completely(), vect_do_peeling_for_alignment(), vect_do_peeling_for_loop_bound(), and vect_transform_loop().
| void free_propagate_block_info | ( | struct propagate_block_info * | ) |
Definition at line 2041 of file flow.c.
References BITMAP_FREE, BITMAP_XFREE, EXECUTE_IF_SET_IN_REG_SET, propagate_block_info::flags, free(), free_EXPR_LIST_list(), i, propagate_block_info::insn_num, propagate_block_info::mem_set_list, propagate_block_info::new_set, PROP_REG_INFO, reg_deaths, propagate_block_info::reg_live, REG_LIVE_LENGTH, propagate_block_info::reg_next_use, and splay_tree_delete().
Referenced by clear_regs_live_in_seq(), collect_pattern_seqs(), dead_or_predicable(), and propagate_block().
| basic_block get_bb_copy | ( | basic_block | ) |
Definition at line 1143 of file cfg.c.
References BASIC_BLOCK, bb_copy, gcc_assert, htab_find(), basic_block_def::index, htab_bb_copy_original_entry::index1, htab_bb_copy_original_entry::index2, and NULL.
Referenced by apply_opt_in_copies(), copy_bbs(), loop_version(), tree_duplicate_sese_region(), unroll_loop_constant_iterations(), unroll_loop_runtime_iterations(), and unswitch_loop().
| basic_block get_bb_original | ( | basic_block | ) |
Definition at line 1101 of file cfg.c.
References BASIC_BLOCK, bb_original, gcc_assert, htab_find(), basic_block_def::index, htab_bb_copy_original_entry::index1, htab_bb_copy_original_entry::index2, and NULL.
Referenced by add_phi_args_after_copy_bb(), apply_opt_in_copies(), fixup_reorder_chain(), and tree_duplicate_sese_region().
| int get_dominated_by | ( | enum | cdi_direction, | |
| basic_block | , | |||
| basic_block ** | ||||
| ) |
Definition at line 712 of file dominance.c.
References et_node::data, dom_computed, gcc_assert, n, node, NULL, et_node::right, et_node::son, xmalloc(), and XNEWVEC.
| unsigned get_dominated_by_region | ( | enum | cdi_direction, | |
| basic_block * | , | |||
| unsigned | , | |||
| basic_block * | ||||
| ) |
Definition at line 742 of file dominance.c.
References BB_DUPLICATED, first_dom_son(), basic_block_def::flags, flags, for(), i, and next_dom_son().
| basic_block get_immediate_dominator | ( | enum | cdi_direction, | |
| basic_block | ||||
| ) |
Definition at line 673 of file dominance.c.
References et_node::data, dom_computed, et_node::father, gcc_assert, node, and NULL.
| rtx get_last_bb_insn | ( | basic_block | ) |
Definition at line 1711 of file cfgrtl.c.
References BARRIER_P, BB_END, end, next_nonnote_insn(), NULL, tablejump_p(), and tmp.
Referenced by rtl_delete_block().
| struct basic_block_def GTY | ( | (chain_next("%h.next_bb"), chain_prev("%h.prev_bb")) | ) | [read] |
Definition at line 214 of file basic-block.h.
Definition at line 118 of file basic-block.h.
References edge_def::aux, edge_def::count, edge_def::dest, edge_def::flags, GTY, edge_def::insns, edge_def::probability, PTR, r, skip, edge_def::src, and tag.
| void guess_outgoing_edge_probabilities | ( | basic_block | ) |
Definition at line 888 of file predict.c.
References BB_END, bb_estimate_probability_locally(), and combine_predictions_for_insn().
Definition at line 147 of file cfg.c.
References cfun, ENTRY_BLOCK, ENTRY_BLOCK_PTR, EXIT_BLOCK, EXIT_BLOCK_PTR, flow_firstobj, flow_obstack, gcc_obstack_init, ggc_alloc_cleared, basic_block_def::index, initialized, n_edges, basic_block_def::next_bb, obstack_alloc, obstack_free, and basic_block_def::prev_bb.
Referenced by build_tree_cfg(), init_empty_tree_cfg(), rest_of_compilation(), and sh_output_mi_thunk().
| struct propagate_block_info* init_propagate_block_info | ( | basic_block | , | |
| regset | , | |||
| regset | , | |||
| regset | , | |||
| int | ||||
| ) | [read] |
Definition at line 1879 of file flow.c.
References abort, add_to_mem_set_list(), ALLOC_REG_SET, any_condjump_p(), propagate_block_info::bb, BB_END, BB_HEAD, BITMAP_ALLOC, bitmap_empty_p, bitmap_operation(), BITMAP_XMALLOC, bitmap_xor(), BITMAP_XOR, canon_rtx(), propagate_block_info::cc0_live, cond, propagate_block_info::cond_local_set, reg_cond_life_info::condition, const0_rtx, current_function_calls_eh_return, current_function_decl, edge::dest, dest, EDGE_COUNT, EDGE_FALLTHRU, EDGE_SUCC, EXECUTE_IF_SET_IN_REG_SET, EXIT_BLOCK_PTR, propagate_block_info::flags, frame_pointer_rtx, FREE_REG_SET, gcc_assert, gen_rtx_fmt_ee(), GET_CODE, GET_MODE, basic_block_def::global_live_at_start, basic_block_def::head, i, INITIALIZE_REG_SET, insn, propagate_block_info::insn_num, JUMP_LABEL, JUMP_P, propagate_block_info::local_set, max_reg_num(), mem, MEM, MEM_P, propagate_block_info::mem_set_list, propagate_block_info::mem_set_list_len, propagate_block_info::new_set, NONJUMP_INSN_P, NULL, NULL_RTX, optimize, reg_cond_life_info::orig_condition, PC, pc_set(), PLUS, PREV_INSN, PROP_AUTOINC, PROP_LOG_LINKS, PROP_SCAN_DEAD_STORES, REG, propagate_block_info::reg_live, propagate_block_info::reg_next_use, reg_obstack, REG_P, REGNO, REGNO_REG_SET_P, reverse_condition(), reversed_comparison_code(), RTX_UNCHANGING_P, SET_DEST, SET_REGNO_REG_SET, SET_SRC, single_set, single_succ(), single_succ_p(), splay_tree_compare_ints(), splay_tree_insert(), splay_tree_new(), reg_cond_life_info::stores, SUBREG_REG, basic_block_def::succ, edge::succ_next, TREE_CODE, TREE_TYPE, TYPE_RETURNS_STACK_DEPRESSED, UNKNOWN, xcalloc(), XCNEWVEC, XEXP, xmalloc(), and XNEW.
Referenced by clear_regs_live_in_seq(), collect_pattern_seqs(), dead_or_predicable(), and propagate_block().
| void init_rtl_bb_info | ( | basic_block | ) |
Definition at line 2927 of file cfgrtl.c.
References gcc_assert, and ggc_alloc_cleared.
Referenced by construct_init_block(), create_basic_block_structure(), expand_gimple_basic_block(), and sh_output_mi_thunk().
Definition at line 1049 of file cfg.c.
References bb_copy, bb_copy_original_eq(), bb_copy_original_hash(), bb_original, create_alloc_pool(), gcc_assert, htab_create(), and NULL.
Referenced by cfg_layout_initialize(), tree_duplicate_sese_region(), tree_ssa_prefetch_arrays(), tree_unswitch_single_loop(), try_unroll_loop_completely(), vect_do_peeling_for_alignment(), vect_do_peeling_for_loop_bound(), and vect_transform_loop().
| rtx insert_insn_end_bb_new | ( | rtx | , | |
| basic_block | ||||
| ) |
Definition at line 2937 of file cfgrtl.c.
References BB_END, BB_HEAD, CALL_P, EDGE_ABNORMAL, emit_insn_after_noloc(), emit_insn_before_noloc(), find_first_parameter_load(), find_reg_note(), flags, GET_CODE, insn, INSN_P, JUMP_P, LABEL_P, NEXT_INSN, NONJUMP_INSN_P, NOTE_INSN_BASIC_BLOCK_P, NULL_RTX, PATTERN, prev_nonnote_insn(), prev_real_insn(), REG_CC_SETTER, sets_cc0_p(), single_succ_edge(), single_succ_p(), and XEXP.
Referenced by see_pre_insert_extensions().
Definition at line 1349 of file cfgrtl.c.
References abort, EDGE_ABNORMAL, EDGE_CRITICAL_P, emit_insn(), end_sequence(), edge::flags, gcc_assert, get_insns(), NULL_RTX, push_to_sequence(), and start_sequence().
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 62 of file cfgbuild.c.
References gcc_unreachable, GET_CODE, JUMP_P, NEXT_INSN, and PATTERN.
| bool insns_match_p | ( | rtx | , | |
| rtx | , | |||
| struct equiv_info * | ||||
| ) |
Definition at line 882 of file struct-equiv.c.
References bitmap_bit_p(), bitmap_set_bit(), CALL_INSN_FUNCTION_USAGE, CALL_P, cancel_changes(), CONSTANT_P, equiv_info::cur, death_notes_match_p(), equiv_info::equiv_used, find_reg_equal_equiv_note(), GET_CODE, INSN_P, struct_equiv_checkpoint::ninsns, num_validated_changes(), PATTERN, reload_completed, rtx_equal_p(), rtx_equiv_p(), s1, s2, set_dest_equiv_p(), SET_SRC, SIBLING_CALL_P, single_set, struct_equiv_make_checkpoint(), struct_equiv_restore_checkpoint(), validate_change(), verify_changes(), struct_equiv_checkpoint::x_start, XEXP, and struct_equiv_checkpoint::y_start.
| void iterate_fix_dominators | ( | enum | cdi_direction, | |
| basic_block * | , | |||
| int | ||||
| ) |
Definition at line 899 of file dominance.c.
References changed, dom_computed, gcc_assert, get_immediate_dominator(), i, NULL, recount_dominator(), and set_immediate_dominator().
| void life_analysis | ( | int | ) |
Definition at line 357 of file flow.c.
References allocate_bb_life_data(), allocate_reg_life_data(), ARRAY_SIZE, CLEAR_HARD_REG_SET, delete_dead_jumptables(), delete_noop_moves(), dump_file, dump_flags, dump_flow_info(), elim_reg_set, ELIMINABLE_REGS, end_alias_analysis(), EXIT_BLOCK_PTR, FRAME_POINTER_REGNUM, free(), i, init_alias_analysis(), init_subregs_of_mode(), int, mark_regs_live_at_end(), memset, notice_stack_pointer_modification(), NULL, optimize, PROP_ALLOW_CFG_CHANGES, PROP_AUTOINC, PROP_LOG_LINKS, PROP_REG_INFO, PROP_SCAN_DEAD_STORES, reg_deaths, regs_asm_clobbered, regs_ever_live, reload_completed, SET_HARD_REG_BIT, UPDATE_LIFE_GLOBAL, and update_life_info().
| void link_block | ( | basic_block | , | |
| basic_block | ||||
| ) |
Definition at line 244 of file cfg.c.
References basic_block_def::next_bb, and basic_block_def::prev_bb.
Referenced by create_basic_block_structure(), create_bb(), merge_blocks_move_predecessor_nojumps(), and tree_move_block_after().
| edge make_edge | ( | basic_block | , | |
| basic_block | , | |||
| int | ||||
| ) |
Definition at line 387 of file cfg.c.
References cached_make_edge(), find_edge(), edge::flags, NULL, and unchecked_make_edge().
Referenced by branch_prob(), cached_make_edge(), cfg_layout_duplicate_bb(), cfg_layout_split_edge(), combine_blocks(), connect_infinite_loops_to_exit(), connect_post_landing_pads(), construct_exit_block(), construct_init_block(), copy_edges_for_bb(), create_edge_and_update_destination_phis(), dw2_build_landing_pads(), erase_matching_seqs(), expand_complex_div_wide(), expand_gimple_cond_expr(), expand_gimple_tailcall(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_parallel(), expand_omp_sections(), expand_parallel_call(), find_bb_boundaries(), fix_crossing_conditional_branches(), flow_call_edges_add(), force_nonfallthru_and_redirect(), lv_adjust_loop_entry_edge(), make_abnormal_goto_edges(), make_cond_expr_edges(), make_ctrl_stmt_edges(), make_edges(), make_eh_edge(), make_exit_edges(), make_goto_expr_edges(), make_single_succ_edge(), make_switch_expr_edges(), mf_build_check_statement_for(), move_sese_region_to_fn(), perfect_nestify(), rtl_flow_call_edges_add(), sjlj_emit_dispatch_table(), slpeel_add_loop_guard(), split_pattern_seq(), tree_divmod_fixed_value(), tree_flow_call_edges_add(), tree_mod_pow2(), tree_mod_subtract(), tree_split_edge(), tree_unroll_loop(), unroll_loop_runtime_iterations(), and unswitch_loop().
| edge make_single_succ_edge | ( | basic_block | , | |
| basic_block | , | |||
| int | ||||
| ) |
Definition at line 398 of file cfg.c.
References basic_block_def::count, make_edge(), and REG_BR_PROB_BASE.
Referenced by add_noreturn_fake_exit_edges(), erase_matching_seqs(), force_nonfallthru_and_redirect(), mf_build_check_statement_for(), rtl_split_edge(), split_block(), and split_edge().
Definition at line 134 of file cfganal.c.
References edge::dest, dest, EDGE_COUNT, EDGE_DFS_BACK, ei_edge(), ei_next(), ei_one_before_end_p(), ei_start, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, edge::flags, free(), basic_block_def::index, last_basic_block, n_basic_blocks, sbitmap_alloc(), sbitmap_free, sbitmap_zero(), SET_BIT, sp, src, edge::src, stack, basic_block_def::succ, edge::succ_next, TEST_BIT, visited, xcalloc(), XCNEWVEC, xmalloc(), and XNEWVEC.
Referenced by analyze_function(), bypass_conditional_jumps(), estimate_bb_frequencies(), identify_jump_threads(), mark_constant_function(), perform_tree_ssa_dce(), reorder_basic_blocks(), tracer(), tree_ssa_dominator_optimize(), and variable_tracking_main().
| bool maybe_hot_bb_p | ( | basic_block | ) |
Definition at line 127 of file predict.c.
References BB_FREQ_MAX, basic_block_def::count, flag_branch_probabilities, basic_block_def::frequency, and PARAM_VALUE.
Referenced by build_tree_conflict_graph(), coalesce_asm_operands(), coalesce_phi_operands(), coalesce_result_decls(), coalesce_vars(), compute_alignments(), compute_function_frequency(), condjump_equiv_p(), copy_bb_p(), decide_peel_completely(), decide_unrolling_and_peeling(), dump_bb_info(), dump_flow_info(), ignore_bb_p(), ix86_pad_returns(), outgoing_edges_match(), rtl_value_profile_transformations(), tree_unroll_loops_completely(), tree_value_profile_transformations(), unswitch_single_loop(), and x86_machine_dependent_reorg().
Definition at line 2072 of file cfgcleanup.c.
References can_merge_blocks_p(), changed, dest, EDGE_COUNT, EDGE_SUCC, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, merge_blocks(), basic_block_def::next_bb, single_succ(), and single_succ_p().
| basic_block nearest_common_dominator | ( | enum | cdi_direction, | |
| basic_block | , | |||
| basic_block | ||||
| ) |
Definition at line 788 of file dominance.c.
References et_node::data, dom_computed, et_nca(), and gcc_assert.
| basic_block nearest_common_dominator_for_set | ( | enum | cdi_direction, | |
| bitmap | ||||
| ) |
Definition at line 807 of file dominance.c.
References BASIC_BLOCK, bitmap_first_set_bit(), EXECUTE_IF_SET_IN_BITMAP, first, i, and nearest_common_dominator().
Referenced by insert_updated_phi_nodes_for(), and update_ssa().
| basic_block next_dom_son | ( | enum | cdi_direction, | |
| basic_block | ||||
| ) |
Definition at line 970 of file dominance.c.
References et_node::data, et_node::father, next, NULL, and et_node::son.
| int post_order_compute | ( | int * | , | |
| bool | ||||
| ) |
Definition at line 652 of file cfganal.c.
References edge::dest, dest, EDGE_COUNT, ei_edge(), ei_next(), ei_one_before_end_p(), ei_start, ENTRY_BLOCK, ENTRY_BLOCK_PTR, EXIT_BLOCK, EXIT_BLOCK_PTR, free(), basic_block_def::index, last_basic_block, n_basic_blocks, sbitmap_alloc(), sbitmap_free, sbitmap_zero(), SET_BIT, sp, src, edge::src, stack, TEST_BIT, visited, and XNEWVEC.
Referenced by df_analyze(), and set_up_bb_rts_numbers().
| int pre_and_rev_post_order_compute | ( | int * | , | |
| int * | , | |||
| bool | ||||
| ) |
Definition at line 731 of file cfganal.c.
References dest, edge::dest, EDGE_COUNT, ei_edge(), ei_next(), ei_one_before_end_p(), ei_start, ENTRY_BLOCK, ENTRY_BLOCK_PTR, EXIT_BLOCK, EXIT_BLOCK_PTR, free(), gcc_assert, basic_block_def::index, last_basic_block, n_basic_blocks, NUM_FIXED_BLOCKS, sbitmap_alloc(), sbitmap_free, sbitmap_zero(), SET_BIT, sp, src, edge::src, stack, TEST_BIT, visited, and XNEWVEC.
Referenced by compute_rvuse_and_antic_safe(), flow_loops_find(), init_reassoc(), and vt_find_locations().
| struct edge_list* pre_edge_lcm | ( | int | , | |
| sbitmap * | , | |||
| sbitmap * | , | |||
| sbitmap * | , | |||
| sbitmap * | , | |||
| sbitmap ** | , | |||
| sbitmap ** | ||||
| ) | [read] |
Definition at line 379 of file lcm.c.
References compute_antinout_edge(), compute_available(), compute_earliest(), compute_insert_delete(), compute_laterin(), create_edge_list(), dump_file, dump_sbitmap_vector(), fprintf(), last_basic_block, edge_list::num_edges, NUM_EDGES, print_edge_list(), sbitmap_vector_alloc(), sbitmap_vector_free, and verify_edge_list().
| struct edge_list* pre_edge_rev_lcm | ( | int | , | |
| sbitmap * | , | |||
| sbitmap * | , | |||
| sbitmap * | , | |||
| sbitmap * | , | |||
| sbitmap ** | , | |||
| sbitmap ** | ||||
| ) | [read] |
Definition at line 713 of file lcm.c.
References compute_antinout_edge(), compute_available(), compute_farthest(), compute_nearerout(), compute_rev_insert_delete(), create_edge_list(), dump_file, dump_sbitmap_vector(), fprintf(), last_basic_block, edge_list::num_edges, NUM_EDGES, print_edge_list(), sbitmap_vector_alloc(), sbitmap_vector_free, sbitmap_vector_zero(), and verify_edge_list().
Definition at line 261 of file predict.c.
References predictor_info::hitrate, int, predict_edge(), REG_BR_PROB_BASE, and TAKEN.
Referenced by estimate_probability(), mf_build_check_statement_for(), predict_loops(), predict_paths_leading_to(), process_note_prediction(), tree_estimate_probability(), and tree_predict_by_opcode().
Definition at line 513 of file cfganal.c.
References ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, fprintf(), index(), INDEX_EDGE_PRED_BB, INDEX_EDGE_SUCC_BB, edge_list::num_blocks, edge_list::num_edges, and x.
Referenced by pre_edge_lcm(), and pre_edge_rev_lcm().
| bool probably_cold_bb_p | ( | basic_block | ) |
Definition at line 144 of file predict.c.
References BB_FREQ_MAX, basic_block_def::count, flag_branch_probabilities, basic_block_def::frequency, and PARAM_VALUE.
Referenced by eliminate_partially_redundant_loads().
| bool probably_never_executed_bb_p | ( | basic_block | ) |
Definition at line 160 of file predict.c.
References basic_block_def::count, and flag_branch_probabilities.
Referenced by bb_to_key(), compute_alignments(), compute_function_frequency(), dump_bb_info(), dump_flow_info(), find_rarely_executed_basic_blocks_and_crossing_edges(), and push_to_next_round_p().
| int propagate_block | ( | basic_block | , | |
| regset | , | |||
| regset | , | |||
| regset | , | |||
| int | ||||
| ) |
Definition at line 2078 of file flow.c.
References BB_END, bb_has_eh_pred(), BB_HEAD, CALL_P, changed, CLEAR_REGNO_REG_SET, propagate_block_info::cond_local_set, EH_RETURN_DATA_REGNO, EXECUTE_IF_SET_IN_REG_SET, find_reg_note(), free_propagate_block_info(), GET_CODE, get_insns(), i, init_propagate_block_info(), insn, INVALID_REGNUM, IOR_REG_SET, propagate_block_info::local_set, propagate_block_info::new_set, NEXT_INSN, NULL, prev, PROP_REG_INFO, propagate_one_insn(), REG_BASIC_BLOCK, REG_BLOCK_GLOBAL, propagate_block_info::reg_live, REG_SETJMP, REGNO_REG_SET_P, regs_ever_live, regs_live_at_setjmp, and SET_REGNO_REG_SET.
Referenced by calculate_global_regs_live(), dead_or_predicable(), rtl_split_block(), split_block(), and update_life_info().
| rtx propagate_one_insn | ( | struct propagate_block_info * | , | |
| rtx | ||||
| ) |
Definition at line 1612 of file flow.c.
References CALL_INSN_FUNCTION_USAGE, CALL_P, can_throw_internal(), propagate_block_info::cc0_live, CLEAR_REG_SET, cond, COND_EXEC_TEST, CONST_OR_PURE_CALL_P, current_function_decl, current_function_return_rtx, EXECUTE_IF_SET_IN_REG_SET, EXIT_BLOCK_PTR, fatal_insn, find_reg_note(), FIRST_PSEUDO_REGISTER, propagate_block_info::flags, flags, free_EXPR_LIST_list(), GET_CODE, global_regs, HAVE_epilogue, HAVE_prologue, HAVE_sibcall_epilogue, i, insn_dead_p(), propagate_block_info::insn_num, INSN_P, invalidate_mems_from_set(), libcall_dead_p(), live_at_end, mark_set_1(), mark_set_regs(), mark_used_reg(), mark_used_regs(), propagate_block_info::mem_set_list, propagate_block_info::mem_set_list_len, MINUS, propagate_block_info::new_set, NULL_RTX, PATTERN, PLUS, prev, PREV_INSN, prologue_epilogue_contains(), PROP_AUTOINC, PROP_DEAD_INSN, PROP_DEATH_NOTES, PROP_EQUAL_NOTES, PROP_KILL_DEAD_CODE, PROP_REG_INFO, PROP_SCAN_DEAD_CODE, propagate_block_delete_insn(), propagate_block_delete_libcall(), refers_to_regno_p(), REG, reg_deaths, REG_EQUAL, REG_EQUIV, REG_LIBCALL, propagate_block_info::reg_live, REG_MAYBE_DEAD, REG_N_CALLS_CROSSED, REG_N_THROWING_CALLS_CROSSED, REG_NOTES, REG_P, REG_RETVAL, regno_reg_rtx, REGNO_REG_SET_P, regs_invalidated_by_call, reload_completed, remove_note(), SET, SET_DEST, SET_REGNO_REG_SET, SET_SRC, sibcall_epilogue_contains(), SIBLING_CALL_P, single_set, STACK_POINTER_REGNUM, stack_pointer_rtx, TEST_HARD_REG_BIT, TREE_CODE, TREE_TYPE, TYPE_RETURNS_STACK_DEPRESSED, USE, x, and XEXP.
Referenced by clear_regs_live_in_seq(), collect_pattern_seqs(), dead_or_predicable(), and propagate_block().
| bool purge_dead_edges | ( | basic_block | ) |
Definition at line 2184 of file cfgrtl.c.
References abort, any_condjump_p(), b, BB_DIRTY, BB_END, BB_HEAD, BRANCH_EDGE, CALL_P, can_throw_internal(), basic_block_def::count, edge::dest, dump_file, EDGE_ABNORMAL, EDGE_ABNORMAL_CALL, EDGE_COMPLEX, EDGE_COUNT, EDGE_EH, EDGE_FAKE, EDGE_FALLTHRU, EDGE_SIBCALL, EDGE_SUCC, ei_next(), ei_safe_edge(), ei_start, EXIT_BLOCK_PTR, f, FALLTHRU_EDGE, find_reg_equal_equiv_note(), find_reg_note(), edge::flags, basic_block_def::flags, flags, FOR_EACH_EDGE, fprintf(), gcc_assert, GET_CODE, basic_block_def::index, insn, INTVAL, JUMP_LABEL, JUMP_P, may_trap_p(), next, NONJUMP_INSN_P, NULL, optimize, PATTERN, REG_BR_PRED, REG_BR_PROB, REG_BR_PROB_BASE, REG_EH_REGION, remove_edge(), remove_note(), returnjump_p(), rtl_dump_file, SIBLING_CALL_P, simplejump_p(), single_succ_edge(), single_succ_p(), edge::succ, edge::succ_next, and XEXP.
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().
| basic_block recount_dominator | ( | enum | cdi_direction, | |
| basic_block | ||||
| ) |
Definition at line 863 of file dominance.c.
References CDI_DOMINATORS, edge::dest, dom_computed, dominated_by_p(), ENTRY_BLOCK_PTR, FOR_EACH_EDGE, gcc_assert, nearest_common_dominator(), NULL, and edge::src.
| void redirect_edge_pred | ( | edge | , | |
| basic_block | ||||
| ) |
Definition at line 498 of file cfg.c.
References connect_src(), disconnect_src(), ei_next(), ei_safe_edge(), ei_start, gcc_assert, edge_iterator::index, pe, edge::src, basic_block_def::succ, edge::succ_next, tmp, VEC_safe_push, and VEC_unordered_remove.
Referenced by expand_omp_sections(), and force_nonfallthru_and_redirect().
| void redirect_edge_succ | ( | edge | , | |
| basic_block | ||||
| ) |
Definition at line 448 of file cfg.c.
References connect_dest(), dest, edge::dest, disconnect_dest(), EDGE_COUNT, EDGE_PRED, execute_on_growing_pred(), execute_on_shrinking_pred(), pe, basic_block_def::pred, edge::pred_next, VEC_safe_push, and VEC_unordered_remove.
Referenced by cfg_layout_redirect_edge_and_branch(), construct_exit_block(), construct_init_block(), dead_or_predicable(), expand_complex_div_wide(), expand_gimple_cond_expr(), expand_omp_sections(), find_if_case_1(), fix_crossing_conditional_branches(), redirect_edge_succ_nodup(), rtl_split_edge(), split_edge(), thread_prologue_and_epilogue_insns(), and try_redirect_by_replacing_jump().
| edge redirect_edge_succ_nodup | ( | edge | , | |
| basic_block | ||||
| ) |
Definition at line 468 of file cfg.c.
References edge::dest, find_edge(), edge::flags, redirect_edge_succ(), REG_BR_PROB_BASE, remove_edge(), s, edge::src, and edge::succ_next.
Referenced by cfg_layout_redirect_edge(), cfg_layout_redirect_edge_and_branch(), cleanup_unconditional_jumps(), force_nonfallthru_and_redirect(), redirect_branch_edge(), redirect_edge_and_branch(), remove_forwarder_block(), ssa_redirect_edge(), try_optimize_cfg(), and try_simplify_condjump().
| void redirect_immediate_dominators | ( | enum | cdi_direction, | |
| basic_block | , | |||
| basic_block | ||||
| ) |
Definition at line 764 of file dominance.c.
References dom_computed, DOM_NO_FAST_QUERY, DOM_OK, et_set_father(), et_split(), gcc_assert, and et_node::son.
Definition at line 4390 of file flow.c.
References EXECUTE_IF_SET_IN_BITMAP, FIRST_PSEUDO_REGISTER, i, and SET_HARD_REG_BIT.
Definition at line 412 of file cfg.c.
References abort, dest, edge::dest, disconnect_dest(), disconnect_src(), EDGE_COUNT, EDGE_PRED, ei_next(), ei_safe_edge(), ei_start, execute_on_shrinking_pred(), free_edge(), gcc_assert, edge_iterator::index, NULL, basic_block_def::pred, edge::pred_next, remove_predictions_associated_with_edge(), src, edge::src, basic_block_def::succ, edge::succ_next, tmp, and VEC_unordered_remove.
Referenced by cleanup_control_expr_graph(), combine_blocks(), connect_post_landing_pads(), dead_or_predicable(), delete_basic_block(), expand_call_inline(), expand_gimple_basic_block(), expand_gimple_tailcall(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_parallel(), expand_parallel_call(), find_bb_boundaries(), find_cond_trap(), finish_eh_generation(), flow_delete_block_noexpunge(), merge_blocks(), merge_blocks_nomove(), move_sese_region_to_fn(), optimize_unexecutable_edges(), propagate_rhs_into_lhs(), purge_dead_edges(), purge_dead_tablejump_edges(), redirect_edge_succ_nodup(), remove_ctrl_stmt_and_useless_edges(), remove_dead_stmt(), remove_fake_predecessors(), remove_fake_successors(), remove_fallthru_edge(), remove_phi_nodes_and_edges_for_unreachable_block(), split_pattern_seq(), tree_divmod_fixed_value(), tree_mod_pow2(), tree_purge_dead_abnormal_call_edges(), tree_purge_dead_eh_edges(), try_redirect_by_replacing_jump(), unloop(), and VEC().
Definition at line 689 of file cfganal.c.
References ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, FOR_BB_BETWEEN, NULL, remove_fake_predecessors(), and remove_fake_successors().
Referenced by branch_prob(), estimate_probability(), instrument_edges(), note_prediction_to_br_prob(), one_pre_gcse_pass(), store_motion(), and try_optimize_cfg().
Definition at line 588 of file cfganal.c.
References EXIT_BLOCK_PTR, and remove_fake_predecessors().
| void reorder_basic_blocks | ( | unsigned | int | ) |
Definition at line 1950 of file bb-reorder.c.
References add_unlikely_executed_notes(), array_size, gcc_target::cannot_modify_jumps_p, cfg_layout_finalize(), cfg_layout_initialize(), connect_traces(), dump_file, dump_flags, dump_flow_info(), bbro_basic_block_data_def::end_of_trace, find_traces(), FREE, GET_ARRAY_SIZE, get_uncond_jump_length(), gcc_target::have_named_sections, bbro_basic_block_data_def::heap, i, bbro_basic_block_data_def::in_trace, last_basic_block, mark_dfs_back_edges(), n_basic_blocks, bbro_basic_block_data_def::node, NULL, NUM_FIXED_BLOCKS, set_edge_can_fallthru_flag(), bbro_basic_block_data_def::start_of_trace, targetm, timevar_pop, timevar_push, uncond_jump_length, verify_hot_cold_block_grouping(), xmalloc(), and XNEWVEC.
| void rtl_make_eh_edge | ( | sbitmap | , | |
| basic_block | , | |||
| rtx | ||||
| ) |
Definition at line 205 of file cfgbuild.c.
References CALL_P, EDGE_ABNORMAL, EDGE_ABNORMAL_CALL, EDGE_EH, free_INSN_LIST_list(), i, make_label_edge(), reachable_handlers(), and XEXP.
Definition at line 218 of file predict.c.
References any_condjump_p(), BB_END, EDGE_FALLTHRU, edge::flags, last_insn, predict_insn(), REG_BR_PROB_BASE, and edge::src.
| bool rtl_predicted_by_p | ( | basic_block | , | |
| enum | br_predictor | |||
| ) |
Definition at line 160 of file predict.c.
References BB_END, INSN_P, int, INTVAL, REG_BR_PRED, REG_NOTE_KIND, REG_NOTES, and XEXP.
| bool rtx_equiv_p | ( | rtx * | , | |
| rtx | , | |||
| int | , | |||
| struct equiv_info * | ||||
| ) |
Definition at line 358 of file struct-equiv.c.
References assign_reg_reg_set(), change, CLEANUP_POST_REGSTACK, equiv_info::common_live, gcc_target::commutative_p, equiv_info::cur, FIRST_PSEUDO_REGISTER, FIRST_STACK_REG, format, gcc_assert, gcc_unreachable, gen_reg_rtx(), GET_CODE, GET_MODE, GET_MODE_SIZE, GET_RTX_FORMAT, GET_RTX_LENGTH, hard_regno_nregs, i, IN_RANGE, equiv_info::input_cost, struct_equiv_checkpoint::input_count, equiv_info::input_reg, struct_equiv_checkpoint::input_valid, LABEL_REF_NONLOCAL_P, LAST_STACK_REG, length, equiv_info::live_update, struct_equiv_checkpoint::local_count, local_count, MEM, equiv_info::mode, next_real_insn(), no_new_pseudos, note_local_live(), NULL_RTX, optimize_size, REG, reg_overlap_mentioned_p(), REG_P, REGNO, REGNO_REG_SET_P, reload_completed, rtx_equal_p(), rtx_equiv_p(), SET, SET_DEST, set_dest_addr_equiv_p(), SET_SRC, SIGN_EXTEND, size, strcmp(), STRUCT_EQUIV_MAX_LOCAL, SUBREG_BYTE, SUBREG_REG, targetm, UNKNOWN, validate_change(), struct_equiv_checkpoint::version, x, equiv_info::x_input, equiv_info::x_label, equiv_info::x_local, equiv_info::x_local_live, x_mode, struct_equiv_checkpoint::x_start, XEXP, XINT, XSTR, XVEC, XVECEXP, XVECLEN, XWINT, equiv_info::y_input, equiv_info::y_label, equiv_info::y_local, and equiv_info::y_local_live.
Referenced by condjump_equiv_p(), insns_match_p(), rtx_equiv_p(), set_dest_addr_equiv_p(), set_dest_equiv_p(), and struct_equiv_merge().
| void scale_bbs_frequencies_gcov_type | ( | basic_block * | , | |
| int | , | |||
| gcov_type | , | |||
| gcov_type | ||||
| ) |
Definition at line 975 of file cfg.c.
References count, basic_block_def::count, FOR_EACH_EDGE, basic_block_def::frequency, frequency, gcc_assert, i, MAX_SAFE_MULTIPLIER, and RDIV.
Referenced by tree_duplicate_sese_region().
| void scale_bbs_frequencies_int | ( | basic_block * | , | |
| int | , | |||
| int | , | |||
| int | ||||
| ) |
Definition at line 946 of file cfg.c.
References count, basic_block_def::count, FOR_EACH_EDGE, basic_block_def::frequency, frequency, gcc_assert, i, and RDIV.
Referenced by duplicate_loop_to_header_edge(), remove_empty_loop(), scale_loop_frequencies(), and tree_duplicate_sese_region().
| void set_bb_copy | ( | basic_block | , | |
| basic_block | ||||
| ) |
Definition at line 1119 of file cfg.c.
References bb_copy, htab_find_slot(), basic_block_def::index, htab_bb_copy_original_entry::index1, INSERT, and pool_alloc().
Referenced by duplicate_block().
| void set_bb_original | ( | basic_block | , | |
| basic_block | ||||
| ) |
Definition at line 1077 of file cfg.c.
References bb_original, htab_find_slot(), basic_block_def::index, htab_bb_copy_original_entry::index1, INSERT, and pool_alloc().
Referenced by duplicate_block().
Definition at line 218 of file cfganal.c.
References any_condjump_p(), BB_END, EDGE_CAN_FALLTHRU, EDGE_COUNT, EDGE_FALLTHRU, EDGE_SUCC, basic_block_def::end, edge::flags, FOR_EACH_BB, FOR_EACH_EDGE, invert_jump(), JUMP_LABEL, basic_block_def::succ, and edge::succ_next.
Referenced by reorder_basic_blocks().
| void set_immediate_dominator | ( | enum | cdi_direction, | |
| basic_block | , | |||
| basic_block | ||||
| ) | [inline] |
Definition at line 688 of file dominance.c.
References et_node::data, dom_computed, DOM_NO_FAST_QUERY, DOM_OK, et_set_father(), et_split(), et_node::father, gcc_assert, and node.
| static basic_block single_pred | ( | basic_block | bb | ) | [inline, static] |
Definition at line 650 of file basic-block.h.
Referenced by bfin_optimize_loop(), blocks_in_phiopt_order(), copyprop_hardreg_forward(), Fill_From_Successor(), find_if_block(), fixup_reorder_chain(), ip_normal_pos(), loop_commit_inserts(), mfb_update_loops(), simplify_using_initial_values(), split_edge(), tree_ssa_phiopt(), tree_unroll_loop(), try_optimize_cfg(), and update_latch_info().
| static edge single_pred_edge | ( | basic_block | bb | ) | [inline, static] |
Definition at line 631 of file basic-block.h.
Referenced by copy_loop_headers(), copyprop_hardreg_forward(), expand_omp_sections(), find_if_block(), loop_version(), perfect_nestify(), remove_path(), simplify_using_entry_checks(), simplify_using_initial_conditions(), simplify_using_initial_values(), split_edge(), tree_find_edge_insert_loc(), tree_optimize_tail_calls_1(), tree_unroll_loop(), try_crossjump_to_edge(), try_optimize_cfg(), unroll_loop_runtime_iterations(), unswitch_loop(), and update_latch_info().
| static bool single_pred_p | ( | basic_block | bb | ) | [inline, static] |
Definition at line 612 of file basic-block.h.
Referenced by bfin_optimize_loop(), blocks_in_phiopt_order(), bypass_conditional_jumps(), cfg_layout_can_merge_blocks_p(), commit_one_edge_insertion(), copy_loop_headers(), copyprop_hardreg_forward(), duplicate_computed_gotos(), find_if_block(), find_if_case_1(), find_if_case_2(), find_implicit_sets(), find_traces_1_round(), init_pre(), insert_aux(), insert_extra_phis(), ip_normal_pos(), potentially_threadable_block(), remove_path(), rtl_can_merge_blocks(), scev_const_prop(), should_duplicate_loop_header_p(), simplify_using_entry_checks(), simplify_using_initial_conditions(), simplify_using_initial_values(), tree_can_merge_blocks_p(), tree_estimate_probability(), tree_find_edge_insert_loc(), tree_forwarder_block_p(), tree_make_forwarder_block(), tree_optimize_tail_calls_1(), tree_ssa_phiopt(), try_crossjump_to_edge(), try_optimize_cfg(), try_simplify_condjump(), vect_analyze_loop_form(), and vect_update_ivs_after_vectorizer().
| static basic_block single_succ | ( | basic_block | bb | ) | [inline, static] |
Definition at line 641 of file basic-block.h.
Referenced by canonicalize_loop_headers(), cfg_layout_can_merge_blocks_p(), compute_antic_aux(), determine_parallel_type(), disband_implicit_edges(), dom_opt_finalize_block(), duplicate_computed_gotos(), eliminate_tail_call(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_parallel(), expand_omp_sections(), find_control_dependence(), find_if_block(), find_if_case_1(), find_tail_calls(), find_traces_1_round(), independent_of_stmt_p(), init_pre(), init_propagate_block_info(), last_basic_block_p(), layout_superblocks(), loop_commit_inserts(), merge_if_block(), merge_phi_nodes(), merge_seq_blocks(), mfb_update_loops(), outgoing_edges_match(), rotate_loop(), rtl_can_merge_blocks(), split_edge(), tree_can_merge_blocks_p(), tree_forwarder_block_p(), tree_if_conversion(), tree_optimize_tail_calls_1(), tree_verify_flow_info(), try_crossjump_to_edge(), try_forward_edges(), try_optimize_cfg(), try_simplify_condjump(), and verify_loop_structure().
| static edge single_succ_edge | ( | basic_block | bb | ) | [inline, static] |
Definition at line 621 of file basic-block.h.
Referenced by branch_prob(), bsi_commit_edge_inserts(), canonicalize_loop_headers(), cfg_layout_can_merge_blocks_p(), cleanup_control_expr_graph(), combine_predictions_for_insn(), commit_one_edge_insertion(), compute_outgoing_frequencies(), condjump_equiv_p(), create_preheader(), decrease_profile(), disband_implicit_edges(), dom_opt_finalize_block(), duplicate_computed_gotos(), eliminate_tail_call(), estimate_bb_frequencies(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_parallel(), expand_omp_sections(), expand_omp_single(), expand_omp_synch(), find_if_block(), find_if_case_1(), find_if_case_2(), find_tail_calls(), find_traces_1_round(), fix_up_fall_thru_edges(), init_pre(), insert_insn_end_bb(), insert_insn_end_bb_new(), loop_delete_branch_edge(), loop_version(), mark_single_exit_loops(), merge_if_block(), merge_phi_nodes(), outgoing_edges_match(), perfect_nestify(), purge_dead_edges(), redirect_edges(), remove_forwarder_block(), remove_forwarder_block_with_phi(), rotate_loop(), rtl_can_merge_blocks(), sjlj_emit_function_enter(), split_edge(), split_loop_exit_edge(), thread_prologue_and_epilogue_insns(), tidy_fallthru_edges(), tree_can_merge_blocks_p(), tree_forwarder_block_p(), tree_lv_add_condition_to_bb(), tree_merge_blocks(), tree_optimize_tail_calls_1(), tree_verify_flow_info(), try_crossjump_to_edge(), try_forward_edges(), try_optimize_cfg(), try_redirect_by_replacing_jump(), unloop(), unroll_loop_runtime_iterations(), unswitch_loop(), update_parameter_components(), and value_replacement().
| static bool single_succ_p | ( | basic_block | bb | ) | [inline, static] |
Definition at line 604 of file basic-block.h.
Referenced by add_labels_and_missing_jumps(), branch_prob(), cfg_layout_can_merge_blocks_p(), cleanup_control_expr_graph(), combine_predictions_for_insn(), commit_one_edge_insertion(), compute_antic_aux(), compute_outgoing_frequencies(), create_preheader(), decrease_profile(), disband_implicit_edges(), dom_opt_finalize_block(), duplicate_computed_gotos(), find_if_block(), find_if_case_1(), find_if_case_2(), find_tail_calls(), find_traces_1_round(), force_single_succ_latches(), forwarder_block_p(), init_propagate_block_info(), insert_insn_end_bb(), insert_insn_end_bb_new(), last_basic_block_p(), loop_optimizer_init(), merge_if_block(), merge_seq_blocks(), outgoing_edges_match(), potentially_threadable_block(), purge_dead_edges(), remove_dead_stmt(), rotate_loop(), rtl_can_merge_blocks(), rtl_tidy_fallthru_edge(), should_duplicate_loop_header_p(), thread_prologue_and_epilogue_insns(), tidy_fallthru_edges(), tree_can_merge_blocks_p(), tree_find_edge_insert_loc(), tree_forwarder_block_p(), tree_if_conversion(), tree_ssa_phiopt(), tree_verify_flow_info(), try_forward_edges(), try_optimize_cfg(), try_redirect_by_replacing_jump(), and verify_loop_structure().
| int struct_equiv_block_eq | ( | int | , | |
| struct equiv_info * | ||||
| ) |
Definition at line 1081 of file struct-equiv.c.
References any_condjump_p(), assign_reg_reg_set(), BB_END, BB_HEAD, equiv_info::best_match, bitmap_intersect_p(), cancel_changes(), equiv_info::check_input_conflict, CLEAR_REG_SET, condjump_equiv_p(), equiv_info::cur, equiv_info::dying_inputs, find_dying_inputs(), gcc_assert, gcc_unreachable, equiv_info::had_input_conflict, i, INIT_REG_SET, equiv_info::input_reg, struct_equiv_checkpoint::input_valid, INSN_P, insns_match_p(), struct_equiv_checkpoint::local_count, equiv_info::mode, equiv_info::need_rerun, struct_equiv_checkpoint::ninsns, NULL_RTX, onlyjump_p(), PATTERN, PREV_INSN, resolve_input_conflict(), returnjump_p(), side_effects_p(), simplejump_p(), STRUCT_EQUIV_FINAL, struct_equiv_improve_checkpoint(), struct_equiv_init(), STRUCT_EQUIV_MATCH_JUMPS, struct_equiv_merge(), STRUCT_EQUIV_NEED_FULL_BLOCK, struct_equiv_restore_checkpoint(), STRUCT_EQUIV_START, equiv_info::x_block, equiv_info::x_end, equiv_info::x_input, equiv_info::x_local, equiv_info::x_local_live, struct_equiv_checkpoint::x_start, equiv_info::y_block, equiv_info::y_end, equiv_info::y_input, equiv_info::y_local, equiv_info::y_local_live, and struct_equiv_checkpoint::y_start.
| bool struct_equiv_init | ( | int | , | |
| struct equiv_info * | ||||
| ) |
Definition at line 988 of file struct-equiv.c.
References ALLOC_REG_SET, BB_DIRTY, equiv_info::best_match, equiv_info::check_input_conflict, CLEANUP_POST_REGSTACK, CLEAR_REGNO_REG_SET, equiv_info::common_live, COPY_REG_SET, equiv_info::cur, equiv_info::equiv_used, FIRST_STACK_REG, basic_block_def::flags, basic_block_def::global_live_at_end, equiv_info::had_input_conflict, struct_equiv_checkpoint::input_count, equiv_info::input_reg, struct_equiv_checkpoint::input_valid, LAST_STACK_REG, equiv_info::live_update, struct_equiv_checkpoint::local_count, equiv_info::mode, equiv_info::need_rerun, struct_equiv_checkpoint::ninsns, NULL_RTX, PROP_DEATH_NOTES, PROP_POST_REGSTACK, reg_obstack, REG_SET_EQUAL_P, struct_equiv_make_checkpoint(), STRUCT_EQUIV_START, UPDATE_LIFE_GLOBAL_RM_NOTES, update_life_info_in_dirty_blocks(), struct_equiv_checkpoint::version, equiv_info::x_block, equiv_info::x_input, equiv_info::x_label, equiv_info::x_local_live, struct_equiv_checkpoint::x_start, equiv_info::y_block, equiv_info::y_input, equiv_info::y_label, equiv_info::y_local_live, and struct_equiv_checkpoint::y_start.
Referenced by condjump_equiv_p(), and struct_equiv_block_eq().
Definition at line 237 of file predict.c.
References bb_ann(), EDGE_COUNT, ENTRY_BLOCK_PTR, flag_guess_branch_prob, gcc_assert, ggc_alloc, i, optimize, PROFILE_GUESSED, and edge::src.
| bool tree_predicted_by_p | ( | basic_block | , | |
| enum | br_predictor | |||
| ) |
| edge try_redirect_by_replacing_jump | ( | edge | , | |
| basic_block | , | |||
| bool | ||||
| ) |
Definition at line 668 of file cfgrtl.c.
References BARRIER_P, BB_END, BB_HEAD, BB_PARTITION, block_label(), can_fallthru(), cc0_rtx, basic_block_def::count, delete_insn(), delete_insn_chain(), dest, edge::dest, dump_file, EDGE_COUNT, EDGE_FALLTHRU, EDGE_SUCC, emit_barrier_after(), emit_jump_insn_after_noloc(), EXIT_BLOCK_PTR, find_reg_note(), edge::flags, fprintf(), gcc_assert, gen_jump(), basic_block_def::index, insn, INSN_UID, JUMP_LABEL, LABEL_NUSES, LABEL_P, NEXT_INSN, next_nonnote_insn(), NOTE_LINE_NUMBER, NOTE_P, NULL, NULL_RTX, onlyjump_p(), optimize, PATTERN, PREV_INSN, redirect_edge_succ(), redirect_jump(), REG_BR_PROB_BASE, reg_mentioned_p(), reload_completed, remove_edge(), set_block_for_insn, side_effects_p(), simplejump_p(), single_set, single_succ_edge(), single_succ_p(), src, edge::src, tablejump_p(), and tmp.
| edge unchecked_make_edge | ( | basic_block | , | |
| basic_block | , | |||
| int | ||||
| ) |
Definition at line 306 of file cfg.c.
References connect_dest(), connect_src(), edge::dest, EDGE_COUNT, execute_on_growing_pred(), edge::flags, flow_obstack, ggc_alloc_cleared, memset, n_edges, obstack_alloc, edge::pred, edge::pred_next, edge::src, edge::succ, edge::succ_next, and VEC_safe_push.
Referenced by cached_make_edge(), duplicate_block(), fixup_reorder_chain(), force_nonfallthru_and_redirect(), and make_edge().
| void unlink_block | ( | basic_block | ) |
Definition at line 255 of file cfg.c.
References basic_block_def::next_bb, NULL, and basic_block_def::prev_bb.
Referenced by expunge_block(), merge_blocks_move_predecessor_nojumps(), and tree_move_block_after().
| void update_bb_for_insn | ( | basic_block | ) |
Definition at line 471 of file cfgrtl.c.
References BARRIER_P, BB_END, BB_HEAD, insn, NEXT_INSN, and set_block_for_insn.
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_bb_profile_for_threading | ( | basic_block | , | |
| int | , | |||
| gcov_type | , | |||
| edge | ||||
| ) |
Definition at line 884 of file cfg.c.
References abort, c, basic_block_def::count, edge::dest, dump_file, EDGE_SUCC, ei_next(), ei_safe_edge(), ei_start, FOR_EACH_EDGE, fprintf(), basic_block_def::frequency, gcc_assert, basic_block_def::index, RDIV, REG_BR_PROB_BASE, and edge::src.
| void update_br_prob_note | ( | basic_block | ) |
Definition at line 1728 of file cfgrtl.c.
References BB_END, BRANCH_EDGE, find_reg_note(), GEN_INT, GET_CODE, INTVAL, JUMP_P, NULL_RTX, REG_BR_PROB, and XEXP.
Referenced by dead_or_predicable(), fix_up_fall_thru_edges(), fixup_reorder_chain(), try_crossjump_to_edge(), try_forward_edges(), and try_simplify_condjump().
| int update_life_info | ( | sbitmap | , | |
| enum | update_life_extent, | |||
| int | ||||
| ) |
Definition at line 633 of file flow.c.
References abort, ALLOC_REG_SET, BASIC_BLOCK, calculate_global_regs_live(), changed, cleanup_cfg(), CLEANUP_EXPENSIVE, clear_log_links(), CLEAR_REG_SET, COPY_REG_SET, count_or_remove_death_notes(), dump_file, ENTRY_BLOCK_PTR, EXECUTE_IF_SET_IN_REG_SET, EXECUTE_IF_SET_IN_SBITMAP, FIRST_PSEUDO_REGISTER, FOR_EACH_BB, FOR_EACH_BB_REVERSE, fprintf(), free(), FREE_REG_SET, gcc_assert, basic_block_def::global_live_at_end, basic_block_def::global_live_at_start, i, INITIALIZE_REG_SET, max_regno, ndead, NULL, PROP_ALLOW_CFG_CHANGES, PROP_DEATH_NOTES, PROP_KILL_DEAD_CODE, PROP_LOG_LINKS, PROP_POST_REGSTACK, PROP_REG_INFO, PROP_SCAN_DEAD_CODE, PROP_SCAN_DEAD_STORES, propagate_block(), REG_BASIC_BLOCK, REG_BLOCK_GLOBAL, REG_BLOCK_UNKNOWN, reg_deaths, REG_LIVE_LENGTH, reg_obstack, regno_reg_rtx, regs_live_at_setjmp, timevar_pop, timevar_push, tmp, UPDATE_LIFE_GLOBAL_RM_NOTES, UPDATE_LIFE_LOCAL, verify_local_live_at_start(), xcalloc(), and XCNEWVEC.
Referenced by branch_target_load_optimize(), copyprop_hardreg_forward(), ia64_reorg(), life_analysis(), purge_all_dead_edges(), recompute_reg_usage(), regrename_optimize(), rest_of_compilation(), rest_of_handle_life(), rest_of_handle_partition_blocks(), rest_of_handle_reorder_blocks(), rest_of_handle_sms(), schedule_ebbs(), split_all_insns(), and update_life_info_in_dirty_blocks().
| int update_life_info_in_dirty_blocks | ( | enum | update_life_extent, | |
| int | ||||
| ) |
Definition at line 776 of file flow.c.
References BB_DIRTY, basic_block_def::flags, FOR_EACH_BB, basic_block_def::index, last_basic_block, n, sbitmap_alloc(), sbitmap_free, sbitmap_zero(), SET_BIT, update_life_info(), and UPDATE_LIFE_LOCAL.
Referenced by cleanup_cfg(), combine_instructions(), if_convert(), rest_of_handle_see(), and struct_equiv_init().
| static VEC | ( | edge | , | |
| gc | ||||
| ) | [inline, static] |
Definition at line 662 of file basic-block.h.
| void verify_dominators | ( | enum | cdi_direction | ) |
Definition at line 817 of file dominance.c.
References CDI_DOMINATORS, dom_info_available_p(), dominated_by_p(), ENTRY_BLOCK_PTR, err, error(), FOR_EACH_BB, gcc_assert, get_immediate_dominator(), basic_block_def::index, NULL, and recount_dominator().
Definition at line 542 of file cfganal.c.
References edge::dest, EDGE_INDEX, EDGE_INDEX_NO_EDGE, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, FOR_BB_BETWEEN, FOR_EACH_EDGE, fprintf(), index(), basic_block_def::index, INDEX_EDGE_PRED_BB, INDEX_EDGE_SUCC_BB, NULL, p, basic_block_def::pred, edge::pred_next, s, edge::src, basic_block_def::succ, and edge::succ_next.
Referenced by pre_edge_lcm(), and pre_edge_rev_lcm().
| enum dom_state dom_computed[2] |
Definition at line 48 of file dominance.c.
1.5.6