#include "config.h"#include "system.h"#include "coretypes.h"#include "tm.h"#include "tree.h"#include "rtl.h"#include "tm_p.h"#include "hard-reg-set.h"#include "basic-block.h"#include "output.h"#include "errors.h"#include "flags.h"#include "function.h"#include "expr.h"#include "ggc.h"#include "langhooks.h"#include "diagnostic.h"#include "tree-flow.h"#include "timevar.h"#include "tree-dump.h"#include "tree-pass.h"#include "toplev.h"#include "except.h"#include "cfgloop.h"#include "cfglayout.h"#include "hashtab.h"#include "gt-tree-cfg.h"

Go to the source code of this file.
| #define CHECK_OP | ( | N, | |||
| MSG | ) |
Value:
do { if (!CONSTANT_CLASS_P (TREE_OPERAND (t, N)) \ && !is_gimple_val (TREE_OPERAND (t, N))) \ { error (MSG); return TREE_OPERAND (t, N); }} while (0)
| void add_phi_args_after_copy | ( | basic_block * | region_copy, | |
| unsigned | n_region | |||
| ) |
| void add_phi_args_after_copy_bb | ( | basic_block | bb_copy | ) |
Definition at line 4743 of file tree-cfg.c.
Referenced by add_phi_args_after_copy(), and copy_phi_node_args().
Definition at line 4839 of file tree-cfg.c.
References duplicate_ssa_name(), EXECUTE_IF_SET_IN_BITMAP, free(), ssa_name_map_entry::from_name, htab_create(), htab_find_slot_with_hash(), INSERT, PTR, ssa_name, SSA_NAME_DEF_STMT, ssa_name_map_entry_eq(), ssa_name_map_entry_hash(), SSA_NAME_VERSION, ssa_name_map_entry::to_name, and xmalloc().
Referenced by rename_variables(), and tree_duplicate_sese_region().
Definition at line 3139 of file tree-cfg.c.
Referenced by branch_prob(), execute_pre(), lambda_loopnest_to_gcc_loopnest(), loop_commit_inserts(), mf_decl_cache_locals(), process_assert_insertions(), scalarize_function(), tree_flow_call_edges_add(), and tree_lower_complex().
| void bsi_commit_one_edge_insert | ( | edge | e, | |
| basic_block * | new_bb | |||
| ) |
Definition at line 3157 of file tree-cfg.c.
Referenced by analyze_edges_for_bb(), and bsi_commit_edge_inserts().
| block_stmt_iterator bsi_for_stmt | ( | tree | stmt | ) |
Definition at line 2927 of file tree-cfg.c.
Referenced by forward_propagate_into_cond(), issue_prefetch_ref(), lambda_loopnest_to_gcc_loopnest(), linearize_expr(), linearize_expr_tree(), realify_fake_stores(), remove_dead_inserted_code(), remove_statement(), remove_stmt_or_phi(), replace_immediate_uses(), rewrite_use_address(), rewrite_use_compare(), rewrite_use_nonlinear_expr(), sink_code_in_bb(), slpeel_make_loop_iterate_ntimes(), substitute_single_use_vars(), tree_divmod_fixed_value(), tree_gen_interval_profiler(), tree_gen_one_value_profiler(), tree_gen_pow2_profiler(), tree_mod_pow2(), tree_mod_subtract(), tree_value_profile_transformations(), and VEC().
| void bsi_insert_after | ( | block_stmt_iterator * | i, | |
| tree | t, | |||
| enum bsi_iterator_update | m | |||
| ) |
Definition at line 2956 of file tree-cfg.c.
Referenced by abs_replacement(), adjust_accumulator_values(), adjust_return_value(), analyze_edges_for_bb(), bsi_commit_one_edge_insert(), bsi_insert_on_edge_immediate(), bsi_move_after(), compute_phi_arg_on_exit(), conditional_replacement(), copy_bb(), create_iv(), determine_invariantness_stmt(), disband_implicit_edges(), expand_call_inline(), expand_complex_div_wide(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_parallel(), expand_omp_sections(), expand_omp_single(), expand_parallel_call(), factor_computed_gotos(), find_phi_replacement_condition(), insert_backedge_copies(), insert_fake_stores(), insert_reciprocals(), lambda_loopnest_to_gcc_loopnest(), lv_adjust_loop_entry_edge(), mf_build_check_statement_for(), perfect_nestify(), process_assert_insertions_for(), propagate_into_addr(), replace_phi_with_cond_modify_expr(), replace_phi_with_stmt(), rewrite_use_nonlinear_expr(), setup_one_parameter(), slpeel_add_loop_guard(), sra_insert_after(), tree_duplicate_bb(), tree_lv_add_condition_to_bb(), tree_merge_blocks(), tree_split_block(), tree_unroll_loop(), update_complex_components(), and vect_create_epilog_for_reduction().
| void bsi_insert_before | ( | block_stmt_iterator * | i, | |
| tree | t, | |||
| enum bsi_iterator_update | m | |||
| ) |
Definition at line 2943 of file tree-cfg.c.
Referenced by abs_replacement(), add_to_dst_predicate_list(), adjust_return_value(), bsi_commit_one_edge_insert(), bsi_insert_on_edge_immediate(), bsi_move_before(), conditional_replacement(), convert_to_gimple_builtin(), create_iv(), expand_call_inline(), expand_complex_div_wide(), expand_complex_move(), factor_computed_gotos(), find_phi_replacement_condition(), force_gimple_operand_bsi(), gimplify_val(), insert_backedge_copies(), insert_reciprocals(), issue_prefetch_ref(), label_to_block(), label_to_block_fn(), lambda_loopnest_to_gcc_loopnest(), minmax_replacement(), perfect_nestify(), realify_fake_stores(), remove_bb(), remove_forwarder_block(), replace_phi_with_cond_modify_expr(), replace_uses_equiv_to_x_with_y(), rewrite_address_base(), rewrite_use_address(), rewrite_use_compare(), rewrite_use_nonlinear_expr(), scev_const_prop(), slpeel_make_loop_iterate_ntimes(), sra_insert_before(), tree_block_label(), tree_divmod_fixed_value(), tree_find_edge_insert_loc(), tree_gen_interval_profiler(), tree_gen_one_value_profiler(), tree_gen_pow2_profiler(), tree_if_convert_cond_expr(), tree_merge_blocks(), tree_mod_pow2(), tree_mod_subtract(), vect_create_data_ref_ptr(), vect_finish_stmt_generation(), vect_pattern_recog_1(), vect_transform_loop(), and vect_update_ivs_after_vectorizer().
Definition at line 3180 of file tree-cfg.c.
Referenced by insert_copy_on_edge(), insert_edge_copies(), insert_into_preds_of_block(), lambda_loopnest_to_gcc_loopnest(), move_computations_stmt(), process_assert_insertions_for(), schedule_sm(), tree_flow_call_edges_add(), tree_gen_edge_profiler(), and update_complex_components_on_edge().
| basic_block bsi_insert_on_edge_immediate | ( | edge | e, | |
| tree | stmt | |||
| ) |
Definition at line 3189 of file tree-cfg.c.
Referenced by bsi_insert_on_edge_immediate_loop(), constant_val_insert(), vect_build_loop_niters(), vect_create_data_ref_ptr(), vect_gen_niters_for_prolog_loop(), vect_generate_tmps_on_preheader(), vect_init_vector(), and vectorizable_load().
| void bsi_move_after | ( | block_stmt_iterator * | from, | |
| block_stmt_iterator * | to | |||
| ) |
| void bsi_move_before | ( | block_stmt_iterator * | from, | |
| block_stmt_iterator * | to | |||
| ) |
Definition at line 2990 of file tree-cfg.c.
Referenced by bsi_move_to_bb_end(), linearize_expr(), linearize_expr_tree(), minmax_replacement(), perfect_nestify(), sink_code_in_bb(), and tree_block_label().
| void bsi_move_to_bb_end | ( | block_stmt_iterator * | from, | |
| basic_block | bb | |||
| ) |
| void bsi_remove | ( | block_stmt_iterator * | i | ) |
Definition at line 2968 of file tree-cfg.c.
References bsi_stmt(), NULL, set_bb_for_stmt(), block_stmt_iterator::tsi, and tsi_delink().
Referenced by bsi_move_after(), bsi_move_before(), cfg_remove_useless_stmts_bb(), cleanup_control_expr_graph(), cleanup_dead_labels(), combine_blocks(), destroy_loop_vec_info(), disband_implicit_edges(), dse_optimize_stmt(), eliminate_tail_call(), expand_call_inline(), expand_complex_div_wide(), 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(), forward_propagate_into_cond(), make_goto_expr_edges(), move_computations_stmt(), propagate_rhs_into_lhs(), realify_fake_stores(), remove_bb(), remove_ctrl_stmt_and_useless_edges(), remove_dead_inserted_code(), remove_dead_stmt(), remove_forwarder_block(), remove_range_assertions(), remove_statement(), remove_stmt_or_phi(), replace_phi_edge_with_variable(), replace_phi_with_stmt(), rewrite_trees(), slpeel_make_loop_iterate_ntimes(), sra_replace(), substitute_single_use_vars(), tree_if_convert_cond_expr(), tree_if_convert_stmt(), tree_merge_blocks(), tree_nrv(), tree_redirect_edge_and_branch(), tree_split_block(), tree_ssa_forward_propagate_single_use_vars(), tree_try_redirect_by_replacing_jump(), VEC(), and vect_transform_loop().
| void bsi_replace | ( | const block_stmt_iterator * | bsi, | |
| tree | stmt, | |||
| bool | preserve_eh_info | |||
| ) |
Definition at line 3018 of file tree-cfg.c.
Referenced by adjust_return_value(), determine_invariantness_stmt(), replace_immediate_uses(), and scalarize_ldst().
Definition at line 151 of file tree-cfg.c.
References alloc_rbi_pool(), basic_block_info, cfg_stats, cleanup_dead_labels(), create_block_annotation(), create_empty_bb(), dump_begin(), dump_end(), dump_file, dump_flags, dump_tree_cfg(), ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, factor_computed_gotos(), group_case_labels(), init_flow(), initial_cfg_capacity, label_to_block_map, last_basic_block, make_blocks(), make_edges(), memset, n_basic_blocks, PROFILE_ABSENT, TDI_vcg, tree_cfg2vcg(), tree_register_cfg_hooks(), VARRAY_BB_INIT, and VARRAY_GROW.
Referenced by execute_build_cfg().
Definition at line 1997 of file tree-cfg.c.
References cfg_remove_useless_stmts_bb(), FOR_EACH_BB, and verify_flow_info().
Referenced by rewrite_out_of_ssa().
| static void cfg_remove_useless_stmts_bb | ( | basic_block | bb | ) | [static] |
Definition at line 1896 of file tree-cfg.c.
References boolean_false_node, boolean_true_node, bsi_end_p(), bsi_next(), bsi_remove(), bsi_start(), bsi_stmt(), cond, COND_EXPR_COND, EDGE_COUNT, EDGE_FALSE_VALUE, EDGE_PRED, EDGE_TRUE_VALUE, flags, FLOAT_TYPE_P, invert_truthvalue(), last_stmt(), NULL_TREE, operand_equal_p(), src, TREE_ADDRESSABLE, TREE_CODE, TREE_CONSTANT, TREE_OPERAND, TREE_TYPE, val, and var_ann().
Referenced by cfg_remove_useless_stmts().
| static bool cleanup_control_expr_graph | ( | basic_block | bb, | |
| block_stmt_iterator | bsi | |||
| ) | [static] |
Definition at line 2173 of file tree-cfg.c.
References bsi_remove(), bsi_stmt(), CDI_DOMINATORS, COND_EXPR_COND, EDGE_COUNT, EDGE_FALLTHRU, EDGE_SUCC, ei_next(), ei_safe_edge(), ei_start, find_taken_edge(), edge::flags, free_dominance_info(), gcc_unreachable, REG_BR_PROB_BASE, remove_edge(), SWITCH_COND, TREE_CODE, and val.
Referenced by VEC().
Referenced by cleanup_tree_cfg(), and cleanup_tree_cfg_1().
Definition at line 1022 of file tree-cfg.c.
Referenced by build_tree_cfg(), and execute_cleanup_cfg_post_optimizing().
Definition at line 4201 of file tree-cfg.c.
References changed, FOR_EACH_BB, free(), n_basic_blocks, remove_forwarder_block(), tree_forwarder_block_p(), worklist, and xmalloc().
Referenced by cleanup_tree_cfg(), and cleanup_tree_cfg_1().
Definition at line 925 of file tree-cfg.c.
Referenced by cleanup_tree_cfg_loop(), execute_cleanup_cfg_post_optimizing(), execute_cleanup_cfg_pre_ipa(), execute_expand_omp(), execute_fixup_cfg(), execute_fold_all_builtins(), execute_todo(), expand_omp_parallel(), finalize_jump_threads(), fini_pre(), make_edges(), tree_optimize_tail_calls_1(), tree_ssa_dominator_optimize(), and tree_ssa_forward_propagate_single_use_vars().
Definition at line 346 of file tree-cfg.c.
References ENTRY_BLOCK_PTR, FOR_BB_BETWEEN, and NULL.
Referenced by free_blocks_annotations().
Definition at line 1757 of file tree-cfg.c.
Referenced by eliminate_unnecessary_stmts(), and remove_useless_stmts().
Definition at line 2655 of file tree-cfg.c.
Referenced by cleanup_dead_labels(), factor_computed_gotos(), find_taken_edge(), make_blocks(), and tree_can_make_abnormal_goto().
| static basic_block create_bb | ( | void * | h, | |
| void * | e, | |||
| basic_block | after | |||
| ) | [static] |
Definition at line 405 of file tree-cfg.c.
References alloc_block(), alloc_stmt_list(), BASIC_BLOCK, basic_block_info, BB_NEW, create_block_annotation(), basic_block_def::flags, gcc_assert, basic_block_def::index, initialize_bb_rbi(), last_basic_block, link_block(), n_basic_blocks, VARRAY_GROW, and VARRAY_SIZE.
| static void create_block_annotation | ( | basic_block | bb | ) | [static] |
Definition at line 327 of file tree-cfg.c.
References gcc_assert, and ggc_alloc_cleared.
Referenced by build_tree_cfg(), and create_bb().
Definition at line 2516 of file tree-cfg.c.
Definition at line 5320 of file tree-cfg.c.
| void debug_tree_bb | ( | basic_block | bb | ) |
| basic_block debug_tree_bb_n | ( | int | n | ) |
Definition at line 2408 of file tree-cfg.c.
| void debug_tree_cfg | ( | int | flags | ) |
Definition at line 2421 of file tree-cfg.c.
Definition at line 2807 of file tree-cfg.c.
Referenced by execute_free_cfg_annotations(), and execute_free_datastructures().
Definition at line 2727 of file tree-cfg.c.
Referenced by execute_free_cfg_annotations(), and execute_free_datastructures().
Definition at line 5134 of file tree-cfg.c.
Referenced by debug_function(), dump_function(), dump_tree_cfg(), execute_todo(), and insert_range_assertions().
Definition at line 2433 of file tree-cfg.c.
Referenced by build_tree_cfg(), debug_tree_cfg(), execute_fixup_cfg(), rewrite_out_of_ssa(), and tree_estimate_probability().
Definition at line 669 of file tree-cfg.c.
References edge_to_cases_elt::case_labels, free(), next, NULL, and TREE_CHAIN.
Referenced by start_recording_case_labels().
Definition at line 641 of file tree-cfg.c.
References htab_hash_pointer.
Referenced by start_recording_case_labels().
Definition at line 706 of file tree-cfg.c.
References htab_delete(), and NULL.
Referenced by cleanup_tree_cfg(), cleanup_tree_cfg_1(), and split_critical_edges().
Definition at line 225 of file tree-cfg.c.
References build_tree_cfg(), current_function_decl, and DECL_SAVED_TREE.
Definition at line 5720 of file tree-cfg.c.
References cfun, EDGE_COUNT, EXIT_BLOCK_PTR, EXPR_LOCATION, EXPR_LOCUS, FOR_EACH_EDGE, last, last_stmt(), location, NULL, edge::src, TREE_CODE, TREE_NO_WARNING, TREE_OPERAND, TREE_THIS_VOLATILE, TREE_TYPE, UNKNOWN_LOCATION, VOID_TYPE_P, warn_missing_noreturn, warn_return_type, and warning.
| void extract_true_false_edges_from_block | ( | basic_block | b, | |
| edge * | true_edge, | |||
| edge * | false_edge | |||
| ) |
Definition at line 5809 of file tree-cfg.c.
Referenced by abs_replacement(), associate_equivalences_with_edges(), conditional_replacement(), dom_opt_finalize_block(), expand_gimple_cond_expr(), find_taken_edge_cond_expr(), minmax_replacement(), record_edge_info(), tree_if_convert_cond_expr(), tree_ssa_loop_version(), tree_verify_flow_info(), and value_replacement().
Definition at line 253 of file tree-cfg.c.
References bsi_end_p(), bsi_insert_after(), bsi_insert_before(), bsi_last(), BSI_NEW_STMT, BSI_SAME_STMT, bsi_start(), bsi_stmt(), build(), build1, computed_goto_p(), create_artificial_label(), create_empty_bb(), create_tmp_var, FOR_EACH_BB, GOTO_DESTINATION, last, NULL, ptr_type_node, and void_type_node.
Referenced by build_tree_cfg().
Definition at line 2318 of file tree-cfg.c.
References CASE_HIGH, CASE_LOW, high, i, low, n, NULL, SWITCH_LABELS, tree_int_cst_compare(), TREE_VEC_ELT, TREE_VEC_LENGTH, and vec.
Referenced by find_taken_edge_switch_expr().
| edge find_taken_edge | ( | basic_block | bb, | |
| tree | val | |||
| ) |
Definition at line 2254 of file tree-cfg.c.
Referenced by cleanup_control_expr_graph(), copy_prop_visit_cond_stmt(), optimize_stmt(), propagate_rhs_into_lhs(), thread_across_edge(), visit_cond_stmt(), and vrp_visit_cond_stmt().
| static edge find_taken_edge_cond_expr | ( | basic_block | bb, | |
| tree | val | |||
| ) | [static] |
Definition at line 2282 of file tree-cfg.c.
References extract_true_false_edges_from_block(), gcc_assert, TREE_CODE, and zero_p().
Referenced by find_taken_edge().
| static edge find_taken_edge_switch_expr | ( | basic_block | bb, | |
| tree | val | |||
| ) | [static] |
Definition at line 2297 of file tree-cfg.c.
References CASE_LABEL, find_case_label_for_value(), find_edge(), gcc_assert, label_to_block, and last_stmt().
Referenced by find_taken_edge().
| tree first_stmt | ( | basic_block | bb | ) |
Definition at line 2823 of file tree-cfg.c.
Referenced by ANL_LOOP_CONSTRUCT::_Loop_Srcpos_Range(), ANL_REGION_CONSTRUCT::_Region_Srcpos_Range(), DU_MANAGER::Collect_CFG(), Create_New_Child(), dump_bb_header(), Expand_Sibling_Blocks(), make_edges(), pp_cfg_jump(), remove_forwarder_block(), remove_forwarder_block_with_phi(), Separate_And_Update(), Split_Block(), statement_sink_location(), tree_cfg2vcg(), ANL_REGION_CONSTRUCT::Write(), and ANL_LOOP_CONSTRUCT::Write().
Definition at line 450 of file tree-cfg.c.
References cond, COND_EXPR_COND, fold(), FOR_EACH_BB, integer_one_node, integer_onep(), integer_zero_node, integer_zerop(), last_stmt(), and TREE_CODE.
Referenced by execute_cleanup_cfg_post_optimizing(), make_edges(), optimize_inline_calls(), and tree_function_versioning().
Definition at line 337 of file tree-cfg.c.
References clear_blocks_annotations().
Referenced by delete_tree_cfg_annotations().
Definition at line 4402 of file tree-cfg.c.
Definition at line 754 of file tree-cfg.c.
References CASE_LABEL, edge_to_cases_elt::case_labels, edge_to_cases_elt::e, find_edge(), htab_find_slot(), i, lab, label_to_block, n, NO_INSERT, NULL, record_switch_edge(), recording_case_labels_p(), edge::src, SWITCH_LABELS, TREE_VEC_ELT, TREE_VEC_LENGTH, and vec.
Referenced by tree_redirect_edge_and_branch().
| tree gimplify_build1 | ( | block_stmt_iterator * | bsi, | |
| enum tree_code | code, | |||
| tree | type, | |||
| tree | a | |||
| ) |
Definition at line 5704 of file tree-cfg.c.
Referenced by do_negate(), do_plus_minus(), do_unop(), expand_complex_conjugate(), expand_complex_div_wide(), expand_complex_division(), expand_complex_multiplication(), expand_complex_negation(), expand_vector_operations_1(), and tree_vec_extract().
Definition at line 5689 of file tree-cfg.c.
Referenced by do_binop(), do_negate(), do_plus_minus(), expand_complex_addition(), expand_complex_comparison(), expand_complex_div_straight(), expand_complex_div_wide(), expand_complex_division(), and expand_complex_multiplication().
| tree gimplify_val | ( | block_stmt_iterator * | bsi, | |
| tree | type, | |||
| tree | exp | |||
| ) |
Definition at line 5651 of file tree-cfg.c.
Referenced by expand_vector_parallel(), extract_component(), gimplify_build1(), gimplify_build2(), and gimplify_build3().
Definition at line 1157 of file tree-cfg.c.
Referenced by build_tree_cfg(), and execute_cleanup_cfg_post_optimizing().
| static GTY | ( | () | ) | [static] |
Definition at line 63 of file tree-cfg.c.
| static bool has_abnormal_incoming_edge_p | ( | basic_block | bb | ) | [inline, static] |
Definition at line 4051 of file tree-cfg.c.
References EDGE_ABNORMAL, edge::flags, and FOR_EACH_EDGE.
Referenced by merge_phi_nodes(), and remove_forwarder_block().
| static bool has_label_p | ( | basic_block | bb, | |
| tree | label | |||
| ) | [static] |
Definition at line 3274 of file tree-cfg.c.
References bsi_end_p(), bsi_next(), bsi_start(), bsi_stmt(), LABEL_EXPR_LABEL, and TREE_CODE.
Referenced by tree_verify_flow_info().
Definition at line 2629 of file tree-cfg.c.
Referenced by expand_complex_move(), make_edges(), mark_stmt_if_obviously_necessary(), and stmt_ends_bb_p().
Definition at line 2615 of file tree-cfg.c.
Referenced by bsi_move_to_bb_end(), disband_implicit_edges(), find_taken_edge(), make_edges(), mark_control_dependent_edges_necessary(), remove_dead_stmt(), stmt_ends_bb_p(), tree_verify_flow_info(), and vect_stmt_relevant_p().
| basic_block label_to_block | ( | tree | dest | ) |
Definition at line 818 of file tree-cfg.c.
References BASIC_BLOCK, bsi_insert_before(), BSI_NEW_STMT, bsi_start(), build1, errorcount, LABEL_DECL_UID, label_to_block_map, sorrycount, VARRAY_BB, and void_type_node.
| tree last_and_only_stmt | ( | basic_block | bb | ) |
Definition at line 2855 of file tree-cfg.c.
Referenced by abs_replacement(), do_while_loop_p(), and minmax_replacement().
| tree last_stmt | ( | basic_block | bb | ) |
Definition at line 2833 of file tree-cfg.c.
Referenced by ANL_LOOP_CONSTRUCT::_Loop_Srcpos_Range(), ANL_REGION_CONSTRUCT::_Region_Srcpos_Range(), abs_replacement(), adjust_return_value(), BB_NODE::Append_stmt_before_branch(), apply_return_prediction(), c_parser_compound_statement_nostart(), candidate_bb_for_phi_optimization(), cfg_remove_useless_stmts_bb(), cleanup_dead_labels(), DU_MANAGER::Collect_CFG(), conditional_replacement(), copy_loop_headers(), create_canonical_iv(), determine_parallel_type(), determine_use_iv_cost_outer(), disband_implicit_edges(), do_while_loop_p(), dom_opt_finalize_block(), estimate_numbers_of_iterations_loop(), execute_warn_function_return(), expand_omp_for(), expand_omp_parallel(), find_taken_edge(), find_taken_edge_switch_expr(), fold_cond_expr_cond(), get_loop_exit_condition(), group_case_labels(), RVI::Insert_statement(), ip_normal_pos(), loop_niter_by_eval(), make_cond_expr_edges(), make_ctrl_stmt_edges(), make_edges(), make_exit_edges(), make_switch_expr_edges(), mark_control_dependent_edges_necessary(), may_eliminate_iv(), minmax_replacement(), ANL_REGION_CONSTRUCT::Next_Stmt(), number_of_iterations_exit(), GTABLE::Patch_Do_While(), Post_loop_peeling(), Pre_loop_peeling(), remove_empty_loop(), rewrite_use_outer(), should_duplicate_loop_header_p(), simplify_using_entry_checks(), simplify_using_initial_conditions(), standard_iv_increment_position(), stmt_after_ip_normal_pos(), tree_block_ends_with_condjump_p(), tree_can_merge_blocks_p(), tree_cfg2vcg(), tree_estimate_probability(), tree_flow_call_edges_add(), tree_may_unswitch_on(), tree_merge_blocks(), tree_nrv(), tree_optimize_tail_calls_1(), tree_predict_by_opcode(), tree_purge_dead_abnormal_call_edges(), tree_purge_dead_eh_edges(), tree_ssa_forward_propagate_single_use_vars(), tree_ssa_iv_optimize_loop(), tree_ssa_phiopt(), tree_unroll_loop(), tree_unswitch_single_loop(), try_unroll_loop_completely(), value_replacement(), VEC(), workshare_safe_to_combine_p(), ANL_REGION_CONSTRUCT::Write(), and ANL_LOOP_CONSTRUCT::Write().
| tree* last_stmt_ptr | ( | basic_block | bb | ) |
Definition at line 2843 of file tree-cfg.c.
Definition at line 1006 of file tree-cfg.c.
References basic_block_def::index, and label_to_block.
Referenced by cleanup_dead_labels().
Definition at line 358 of file tree-cfg.c.
References computed_goto_p(), create_basic_block(), ENTRY_BLOCK_PTR, i, NULL, set_bb_for_stmt(), stmt_ends_bb_p(), stmt_starts_bb_p(), tsi_end_p(), tsi_next(), tsi_split_statement_list_before(), tsi_start(), and tsi_stmt().
Referenced by build_tree_cfg().
| static void make_cond_expr_edges | ( | basic_block | bb | ) | [static] |
Definition at line 619 of file tree-cfg.c.
References COND_EXPR_ELSE, COND_EXPR_THEN, EDGE_FALSE_VALUE, EDGE_TRUE_VALUE, gcc_assert, GOTO_DESTINATION, label_to_block, last_stmt(), make_edge(), and TREE_CODE.
Referenced by make_ctrl_stmt_edges(), and make_edges().
| static void make_ctrl_stmt_edges | ( | basic_block | bb | ) | [static] |
Definition at line 519 of file tree-cfg.c.
References EDGE_COUNT, EDGE_FAKE, EXIT_BLOCK_PTR, gcc_assert, gcc_unreachable, last, last_stmt(), make_cond_expr_edges(), make_edge(), make_eh_edges(), make_goto_expr_edges(), make_switch_expr_edges(), and TREE_CODE.
Referenced by make_edges().
Definition at line 473 of file tree-cfg.c.
References BASIC_BLOCK, cleanup_tree_cfg(), EDGE_COUNT, EDGE_FALLTHRU, ENTRY_BLOCK_PTR, first, first_stmt(), fold_cond_expr_cond(), FOR_EACH_BB, is_ctrl_altering_stmt(), is_ctrl_stmt(), last, last_stmt(), make_ctrl_stmt_edges(), make_edge(), make_exit_edges(), basic_block_def::next_bb, and remove_fake_exit_edges().
| static void make_exit_edges | ( | basic_block | bb | ) | [static] |
Definition at line 560 of file tree-cfg.c.
References call_expr_flags(), current_function_has_nonlocal_label, ECF_NORETURN, EDGE_FAKE, EDGE_FALLTHRU, EXIT_BLOCK_PTR, gcc_assert, gcc_unreachable, get_call_expr_in(), last, last_stmt(), make_edge(), make_eh_edges(), make_goto_expr_edges(), basic_block_def::next_bb, TREE_CODE, and TREE_SIDE_EFFECTS.
Referenced by make_edges().
| static void make_goto_expr_edges | ( | basic_block | bb | ) | [static] |
Definition at line 841 of file tree-cfg.c.
References bsi_end_p(), bsi_last(), bsi_next(), bsi_remove(), bsi_start(), bsi_stmt(), DECL_NONLOCAL, dest, edge_to_cases_elt::e, EDGE_ABNORMAL, EDGE_COUNT, EDGE_FAKE, EDGE_FALLTHRU, error_mark_node, EXIT_BLOCK_PTR, EXPR_LOCATION, EXPR_LOCUS, FOR_EACH_BB, FORCED_LABEL, GOTO_DESTINATION, LABEL_EXPR_LABEL, label_to_block, last, make_edge(), simple_goto_p(), target, and TREE_CODE.
Referenced by make_ctrl_stmt_edges(), make_edges(), and make_exit_edges().
| static void make_switch_expr_edges | ( | basic_block | bb | ) | [static] |
Definition at line 797 of file tree-cfg.c.
References CASE_LABEL, i, lab, label_to_block, last_stmt(), make_edge(), n, SWITCH_LABELS, TREE_VEC_ELT, TREE_VEC_LENGTH, and vec.
Referenced by make_ctrl_stmt_edges(), and make_edges().
Definition at line 4355 of file tree-cfg.c.
References calculate_dominance_info(), CDI_DOMINATORS, dest, dominated_by_p(), EDGE_SUCC, FOR_EACH_BB, free(), has_abnormal_incoming_edge_p(), n_basic_blocks, phi_nodes(), remove_forwarder_block_with_phi(), tree_forwarder_block_p(), worklist, and xmalloc().
Definition at line 5353 of file tree-cfg.c.
References ASM_INPUT_P, ASM_VOLATILE_P, call(), call_expr_flags(), ECF_ALWAYS_RETURN, ECF_NORETURN, get_call_expr_in(), and TREE_CODE.
Definition at line 1742 of file tree-cfg.c.
Referenced by eliminate_unnecessary_stmts(), and remove_useless_stmts_1().
| static bool phi_alternatives_equal | ( | basic_block | dest, | |
| edge | e1, | |||
| edge | e2 | |||
| ) | [static] |
Definition at line 2361 of file tree-cfg.c.
References gcc_assert, NULL_TREE, operand_equal_for_phi_arg_p(), PHI_ARG_DEF, PHI_CHAIN, and phi_nodes().
Referenced by remove_forwarder_block(), and remove_forwarder_block_with_phi().
Definition at line 5264 of file tree-cfg.c.
References alloca, FOR_EACH_BB, fprintf(), basic_block_def::index, loop::inner, basic_block_def::loop_father, memset, loop::next, NULL, loop::num, print_pred_bbs(), print_succ_bbs(), and tree_dump_bb().
Referenced by print_loop(), and print_loop_ir().
Definition at line 5307 of file tree-cfg.c.
Referenced by debug_loop_ir(), and number_of_iterations_for_all_loops().
| static void print_pred_bbs | ( | FILE * | file, | |
| basic_block | bb | |||
| ) | [static] |
Definition at line 5238 of file tree-cfg.c.
References FOR_EACH_EDGE, fprintf(), and edge::src.
Referenced by print_loop().
| static void print_succ_bbs | ( | FILE * | file, | |
| basic_block | bb | |||
| ) | [static] |
Definition at line 5251 of file tree-cfg.c.
References FOR_EACH_EDGE, fprintf(), and edge::src.
Referenced by print_loop().
Definition at line 715 of file tree-cfg.c.
References edge_to_cases_elt::case_labels, edge_to_cases_elt::e, free(), htab_find_slot(), INSERT, NULL, TREE_CHAIN, and xmalloc().
Referenced by get_cases_for_edge().
Definition at line 3211 of file tree-cfg.c.
References add_phi_arg(), edge::dest, gcc_assert, NULL, PENDING_STMT, PHI_CHAIN, phi_nodes(), PHI_RESULT, result, TREE_CHAIN, TREE_PURPOSE, and TREE_VALUE.
Referenced by tree_split_edge().
| static void remove_bb | ( | basic_block | bb | ) | [static] |
Definition at line 2038 of file tree-cfg.c.
References bsi_end_p(), bsi_insert_before(), BSI_NEW_STMT, bsi_remove(), bsi_start(), bsi_stmt(), DECL_NONLOCAL, dump_bb(), dump_file, dump_flags, EXPR_HAS_LOCATION, EXPR_LOCATION, EXPR_LOCUS, FORCED_LABEL, fprintf(), i, basic_block_def::index, LABEL_EXPR_LABEL, LOCATION_LINE, NULL, basic_block_def::prev_bb, release_defs(), remove_phi_nodes_and_edges_for_unreachable_block(), set_bb_for_stmt(), TDF_DETAILS, TREE_CODE, warn_notreached, and warning.
Definition at line 2235 of file tree-cfg.c.
References EDGE_FALLTHRU, edge::flags, FOR_EACH_EDGE, and remove_edge().
Referenced by VEC().
| static bool remove_forwarder_block | ( | basic_block | bb, | |
| basic_block ** | worklist | |||
| ) | [static] |
Definition at line 4068 of file tree-cfg.c.
References add_phi_arg(), BSI_CONTINUE_LINKING, bsi_end_p(), bsi_insert_before(), bsi_remove(), bsi_start(), bsi_stmt(), CDI_DOMINATORS, DECL_NONLOCAL, delete_basic_block(), edge::dest, dest, dom_info_available_p(), EDGE_ABNORMAL, EDGE_SUCC, ei_safe_edge(), ei_start, find_edge(), first_stmt(), FOR_EACH_EDGE, gcc_assert, get_immediate_dominator(), has_abnormal_incoming_edge_p(), LABEL_EXPR_LABEL, nearest_common_dominator(), NULL_TREE, phi_alternatives_equal(), PHI_ARG_DEF, PHI_CHAIN, phi_nodes(), redirect_edge_and_branch(), redirect_edge_succ_nodup(), s, set_immediate_dominator(), TREE_CODE, and tree_forwarder_block_p().
Referenced by cleanup_forwarder_blocks().
| static void remove_forwarder_block_with_phi | ( | basic_block | bb | ) | [static] |
Definition at line 4227 of file tree-cfg.c.
References add_phi_arg(), CDI_DOMINATORS, DECL_NONLOCAL, delete_basic_block(), edge::dest, dest, EDGE_COUNT, EDGE_PRED, EDGE_SUCC, find_edge(), first_stmt(), gcc_assert, get_immediate_dominator(), LABEL_EXPR_LABEL, nearest_common_dominator(), NULL, NULL_TREE, PENDING_STMT, phi_alternatives_equal(), PHI_ARG_DEF, PHI_CHAIN, phi_nodes(), redirect_edge_and_branch(), s, set_immediate_dominator(), split_edge(), edge::src, SSA_NAME, TREE_CHAIN, TREE_CODE, TREE_PURPOSE, and TREE_VALUE.
Referenced by merge_phi_nodes().
| static void remove_phi_nodes_and_edges_for_unreachable_block | ( | basic_block | bb | ) | [static] |
Definition at line 2015 of file tree-cfg.c.
References EDGE_COUNT, EDGE_SUCC, next, NULL_TREE, PHI_CHAIN, phi_nodes(), remove_edge(), and remove_phi_node().
Referenced by remove_bb().
Definition at line 1860 of file tree-cfg.c.
References clear_special_calls(), current_function_decl, DECL_SAVED_TREE, memset, remove_useless_stmts_1(), and rus_data::repeat.
Definition at line 1765 of file tree-cfg.c.
References fold_stmt(), get_call_expr_in(), i, IS_EMPTY_STMT, rus_data::last_goto, rus_data::may_branch, rus_data::may_throw, notice_special_calls(), NULL, remove_useless_stmts_bind(), remove_useless_stmts_cond(), remove_useless_stmts_goto(), remove_useless_stmts_label(), remove_useless_stmts_tc(), remove_useless_stmts_tf(), TREE_CODE, tree_could_throw_p(), tsi_delink(), tsi_end_p(), tsi_link_before(), tsi_next(), TSI_SAME_STMT, tsi_start(), tsi_stmt(), tsi_stmt_ptr(), and update_call_expr_flags().
Referenced by remove_useless_stmts(), remove_useless_stmts_1(), remove_useless_stmts_bind(), remove_useless_stmts_cond(), remove_useless_stmts_tc(), and remove_useless_stmts_tf().
Definition at line 1643 of file tree-cfg.c.
References BIND_EXPR_BLOCK, BIND_EXPR_BODY, BIND_EXPR_VARS, BLOCK_ABSTRACT_ORIGIN, current_function_decl, DECL_SAVED_TREE, NULL_TREE, remove_useless_stmts_1(), rus_data::repeat, and TREE_CODE.
Referenced by remove_useless_stmts_1().
Definition at line 1416 of file tree-cfg.c.
References alloc_stmt_list(), build_empty_stmt(), cond, COND_EXPR_COND, COND_EXPR_ELSE, COND_EXPR_THEN, expr_only(), fold(), GOTO_DESTINATION, rus_data::has_label, integer_nonzerop(), integer_zerop(), rus_data::last_goto, location, NULL, remove_useless_stmts_1(), remove_useless_stmts_warn_notreached(), rus_data::repeat, TREE_CODE, TREE_CONSTANT, TREE_OPERAND, TREE_SIDE_EFFECTS, and warn_notreached.
Referenced by remove_useless_stmts_1().
Definition at line 1671 of file tree-cfg.c.
References dest, GOTO_DESTINATION, rus_data::last_goto, rus_data::may_branch, NULL, and TREE_CODE.
Referenced by remove_useless_stmts_1().
Definition at line 1685 of file tree-cfg.c.
References build_empty_stmt(), DECL_NONLOCAL, GOTO_DESTINATION, rus_data::has_label, LABEL_EXPR_LABEL, rus_data::last_goto, NULL, and rus_data::repeat.
Referenced by remove_useless_stmts_1().
Definition at line 1568 of file tree-cfg.c.
References CATCH_BODY, CATCH_TYPES, EH_FILTER_FAILURE, EH_FILTER_MUST_NOT_THROW, EH_FILTER_TYPES, i, rus_data::last_goto, rus_data::may_throw, NULL, remove_useless_stmts_1(), remove_useless_stmts_warn_notreached(), rus_data::repeat, TREE_CODE, TREE_OPERAND, TREE_SIDE_EFFECTS, tsi_end_p(), tsi_next(), tsi_start(), tsi_stmt(), and warn_notreached.
Referenced by remove_useless_stmts_1().
Definition at line 1517 of file tree-cfg.c.
References append_to_statement_list(), rus_data::last_goto, rus_data::may_branch, rus_data::may_throw, NULL, remove_useless_stmts_1(), rus_data::repeat, TREE_OPERAND, and TREE_SIDE_EFFECTS.
Referenced by remove_useless_stmts_1().
Definition at line 1360 of file tree-cfg.c.
References BIND_EXPR_BLOCK, CATCH_BODY, COND_EXPR_COND, COND_EXPR_ELSE, COND_EXPR_THEN, EH_FILTER_FAILURE, EXPR_HAS_LOCATION, EXPR_LOCATION, i, LOCATION_LINE, TREE_CODE, TREE_OPERAND, tsi_end_p(), tsi_next(), tsi_start(), tsi_stmt(), and warning.
Referenced by remove_useless_stmts_cond(), remove_useless_stmts_tc(), and remove_useless_stmts_warn_notreached().
| void rewrite_to_new_ssa_names | ( | basic_block * | region, | |
| unsigned | n_region, | |||
| htab_t | map | |||
| ) |
Definition at line 4988 of file tree-cfg.c.
References r, and rewrite_to_new_ssa_names_bb().
Referenced by tree_duplicate_sese_region().
| void rewrite_to_new_ssa_names_bb | ( | basic_block | bb, | |
| htab_t | map | |||
| ) |
Definition at line 4908 of file tree-cfg.c.
References bsi_end_p(), bsi_next(), bsi_start(), bsi_stmt(), DEF_OP_PTR, DEF_OPS, defs, edge::dest, EDGE_ABNORMAL, edge::flags, FOR_EACH_EDGE, get_stmt_operands(), i, NUM_DEFS, NUM_USES, NUM_V_MAY_DEFS, NUM_V_MUST_DEFS, NUM_VUSES, PHI_ARG_DEF_FROM_EDGE, PHI_ARG_DEF_PTR_FROM_EDGE, PHI_CHAIN, phi_nodes(), PHI_RESULT, PHI_RESULT_PTR, rewrite_to_new_ssa_names_def(), rewrite_to_new_ssa_names_use(), SSA_NAME_OCCURS_IN_ABNORMAL_PHI, stmt_ann(), USE_OP_PTR, USE_OPS, V_MAY_DEF_OP_PTR, V_MAY_DEF_OPS, V_MAY_DEF_RESULT_PTR, V_MUST_DEF_KILL_PTR, V_MUST_DEF_OPS, V_MUST_DEF_RESULT_PTR, VUSE_OP_PTR, and VUSE_OPS.
Referenced by rename_variables(), and rewrite_to_new_ssa_names().
| static void rewrite_to_new_ssa_names_def | ( | def_operand_p | def, | |
| tree | stmt, | |||
| htab_t | map | |||
| ) | [static] |
Definition at line 4871 of file tree-cfg.c.
References DEF_FROM_PTR, gcc_assert, htab_find_with_hash(), SET_DEF, SSA_NAME, SSA_NAME_DEF_STMT, SSA_NAME_VERSION, ssa_name_map_entry::to_name, and TREE_CODE.
Referenced by rewrite_to_new_ssa_names_bb().
| static void rewrite_to_new_ssa_names_use | ( | use_operand_p | use, | |
| htab_t | map | |||
| ) | [static] |
Definition at line 4889 of file tree-cfg.c.
References htab_find_with_hash(), SET_USE, SSA_NAME, SSA_NAME_VERSION, ssa_name_map_entry::to_name, TREE_CODE, and USE_FROM_PTR.
Referenced by rewrite_to_new_ssa_names_bb().
| void set_bb_for_stmt | ( | tree | t, | |
| basic_block | bb | |||
| ) |
Definition at line 2886 of file tree-cfg.c.
Referenced by bsi_insert_after(), bsi_insert_before(), bsi_remove(), bsi_replace(), combine_blocks(), create_phi_node(), make_blocks(), remove_bb(), replace_phi_with_cond_modify_expr(), set_bb_for_stmt(), set_phi_nodes(), and tree_merge_blocks().
Definition at line 2665 of file tree-cfg.c.
Referenced by lower_cond_expr(), make_goto_expr_edges(), mark_stmt_if_obviously_necessary(), and tree_verify_flow_info().
Definition at line 5606 of file tree-cfg.c.
References EDGE_ABNORMAL, EDGE_CRITICAL_P, end_recording_case_labels(), edge::flags, FOR_ALL_BB, FOR_EACH_EDGE, split_edge(), and start_recording_case_labels().
Definition at line 4828 of file tree-cfg.c.
References ssa_name_map_entry::from_name.
Referenced by allocate_ssa_names().
Definition at line 4819 of file tree-cfg.c.
References ssa_name_map_entry::from_name, and SSA_NAME_VERSION.
Referenced by allocate_ssa_names().
Definition at line 685 of file tree-cfg.c.
References edge_to_cases_cleanup(), edge_to_cases_eq(), edge_to_cases_hash(), gcc_assert, htab_create(), and NULL.
Referenced by cleanup_tree_cfg(), cleanup_tree_cfg_1(), and split_critical_edges().
Definition at line 2718 of file tree-cfg.c.
Referenced by infer_value_range(), init_copy_prop(), init_dont_simulate_again(), insert_backedge_copies(), make_blocks(), make_edges(), movement_possibility(), process_assert_insertions_for(), scalarize_ldst(), simulate_stmt(), sra_insert_after(), statement_sink_location(), tree_can_merge_blocks_p(), tree_find_edge_insert_loc(), tree_merge_blocks(), and tree_verify_flow_info().
Definition at line 2679 of file tree-cfg.c.
References cfg_stats, DECL_NONLOCAL, FORCED_LABEL, LABEL_EXPR_LABEL, NULL_TREE, cfg_stats_d::num_merged_labels, and TREE_CODE.
Referenced by make_blocks().
| static bool tree_block_ends_with_call_p | ( | basic_block | bb | ) | [static] |
Definition at line 5331 of file tree-cfg.c.
References bsi_last(), bsi_stmt(), get_call_expr_in(), and NULL.
| static bool tree_block_ends_with_condjump_p | ( | basic_block | bb | ) | [static] |
| tree tree_block_label | ( | basic_block | bb | ) |
Definition at line 4428 of file tree-cfg.c.
Referenced by compute_phi_arg_on_exit(), construct_init_block(), disband_implicit_edges(), expand_complex_div_wide(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_sections(), lv_adjust_loop_entry_edge(), mf_build_check_statement_for(), perfect_nestify(), propagate_into_addr(), scev_const_prop(), slpeel_add_loop_guard(), slpeel_make_loop_iterate_ntimes(), tree_lv_add_condition_to_bb(), tree_redirect_edge_and_branch(), and tree_unroll_loop().
| static bool tree_can_duplicate_bb_p | ( | basic_block bb | ATTRIBUTE_UNUSED | ) | [static] |
Definition at line 4683 of file tree-cfg.c.
| static bool tree_can_merge_blocks_p | ( | basic_block | a, | |
| basic_block | b | |||
| ) | [static] |
Definition at line 1245 of file tree-cfg.c.
References bsi_end_p(), bsi_next(), bsi_start(), bsi_stmt(), DECL_ARTIFICIAL, DECL_NONLOCAL, dest, EDGE_ABNORMAL, EDGE_COUNT, EDGE_SUCC, EXIT_BLOCK_PTR, flags, LABEL_EXPR_LABEL, last_stmt(), phi_nodes(), stmt_ends_bb_p(), and TREE_CODE.
Definition at line 2525 of file tree-cfg.c.
References current_function_decl, edge::dest, EDGE_FAKE, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, first, first_stmt(), edge::flags, FOR_EACH_BB, FOR_EACH_EDGE, fprintf(), fputc(), fputs(), get_lineno(), basic_block_def::index, last, last_stmt(), basic_block_def::next_bb, TREE_CODE, and tree_code_name.
Referenced by build_tree_cfg().
| void tree_dump_bb | ( | basic_block | bb, | |
| FILE * | outf, | |||
| int | indent | |||
| ) |
| static basic_block tree_duplicate_bb | ( | basic_block | bb | ) | [static] |
Definition at line 4692 of file tree-cfg.c.
References bsi_end_p(), bsi_insert_after(), BSI_NEW_STMT, bsi_next(), bsi_start(), bsi_stmt(), copy, copy_virtual_operands(), create_empty_bb(), create_phi_node(), EXIT_BLOCK_PTR, FOR_EACH_SSA_TREE_OPERAND, get_stmt_ann(), get_stmt_operands(), mark_for_rewrite(), PHI_CHAIN, phi_nodes(), PHI_RESULT, phi_reverse(), set_phi_nodes(), SSA_OP_ALL_DEFS, TREE_CODE, unshare_expr(), and val.
| bool tree_duplicate_sese_region | ( | edge | entry, | |
| edge | exit, | |||
| basic_block * | region, | |||
| unsigned | n_region, | |||
| basic_block * | region_copy | |||
| ) |
Definition at line 5558 of file tree-cfg.c.
References edge::dest, phi_nodes(), and reserve_phi_args_for_new_edge().
Definition at line 5570 of file tree-cfg.c.
References edge::dest, phi_nodes(), and remove_phi_args().
| static bool tree_find_edge_insert_loc | ( | edge | e, | |
| block_stmt_iterator * | bsi, | |||
| basic_block * | new_bb | |||
| ) | [static] |
Definition at line 3051 of file tree-cfg.c.
References bsi_end_p(), bsi_insert_before(), bsi_last(), BSI_NEW_STMT, bsi_next(), bsi_prev(), bsi_start(), bsi_stmt(), dest, edge::dest, EDGE_ABNORMAL, EDGE_COUNT, EDGE_PRED, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, edge::flags, gcc_assert, is_gimple_val(), phi_nodes(), split_edge(), src, edge::src, stmt_ends_bb_p(), tmp, TREE_CODE, and TREE_OPERAND.
Referenced by bsi_commit_one_edge_insert(), and bsi_insert_on_edge_immediate().
| static int tree_flow_call_edges_add | ( | sbitmap | blocks | ) | [static] |
Definition at line 5386 of file tree-cfg.c.
References BASIC_BLOCK, bsi_commit_edge_inserts(), bsi_end_p(), bsi_insert_on_edge(), bsi_last(), bsi_prev(), bsi_stmt(), build_empty_stmt(), EDGE_FAKE, EXIT_BLOCK_PTR, find_edge(), gcc_assert, i, last_basic_block, last_bb, last_stmt(), make_edge(), n_basic_blocks, need_fake_edge_p(), NULL, NULL_TREE, split_block(), TEST_BIT, and verify_flow_info().
| static bool tree_forwarder_block_p | ( | basic_block | bb, | |
| bool | phi_wanted | |||
| ) | [static] |
Definition at line 4003 of file tree-cfg.c.
References bsi_end_p(), bsi_last(), bsi_next(), bsi_stmt(), DECL_NONLOCAL, dest, EDGE_ABNORMAL, EDGE_COUNT, EDGE_SUCC, ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR, find_edge(), flags, gcc_assert, LABEL_EXPR_LABEL, NULL_TREE, phi_nodes(), and TREE_CODE.
Referenced by cleanup_forwarder_blocks(), merge_phi_nodes(), and remove_forwarder_block().
Definition at line 3957 of file tree-cfg.c.
References add_phi_arg(), create_phi_node(), edge::dest, EDGE_COUNT, flush_pending_stmts(), FOR_EACH_EDGE, make_ssa_name(), PHI_CHAIN, phi_nodes(), PHI_RESULT, phi_reverse(), set_phi_nodes(), SET_PHI_RESULT, edge::src, SSA_NAME_DEF_STMT, and SSA_NAME_VAR.
| static void tree_merge_blocks | ( | basic_block | a, | |
| basic_block | b | |||
| ) | [static] |
Definition at line 1298 of file tree-cfg.c.
References bsi_end_p(), bsi_next(), bsi_remove(), bsi_start(), bsi_stmt(), dump_file, EDGE_FALLTHRU, EDGE_SUCC, flags, fprintf(), gcc_assert, basic_block_def::index, last, last_stmt(), move_block_after(), NULL, set_bb_for_stmt(), stmt_ends_bb_p(), TREE_CODE, tsi_last(), tsi_link_after(), and TSI_NEW_STMT.
| static bool tree_move_block_after | ( | basic_block | bb, | |
| basic_block | after | |||
| ) | [static] |
Definition at line 4668 of file tree-cfg.c.
References link_block(), basic_block_def::prev_bb, and unlink_block().
Definition at line 3525 of file tree-cfg.c.
References CONSTANT_CLASS_P, DECL_P, error_mark_node, is_gimple_min_invariant(), IS_TYPE_OR_DECL_P, SSA_NAME, TREE_CODE, and TREE_OPERAND.
Referenced by verify_node_sharing().
Definition at line 5540 of file tree-cfg.c.
Referenced by eliminate_degenerate_phis(), fini_pre(), and tree_ssa_dominator_optimize().
| bool tree_purge_dead_eh_edges | ( | basic_block | bb | ) |
Definition at line 5495 of file tree-cfg.c.
Referenced by execute_fixup_cfg(), execute_fold_all_builtins(), substitute_and_fold(), tidy_after_forward_propagate_addr(), tree_purge_all_dead_eh_edges(), tree_purge_dead_abnormal_call_edges(), and VEC().
| static edge tree_redirect_edge_and_branch | ( | edge | e, | |
| basic_block | dest | |||
| ) | [static] |
Definition at line 4498 of file tree-cfg.c.
References bsi_end_p(), bsi_last(), bsi_remove(), bsi_stmt(), CASE_LABEL, COND_EXPR_ELSE, COND_EXPR_THEN, edge::dest, EDGE_ABNORMAL_CALL, EDGE_EH, EDGE_FALLTHRU, EDGE_TRUE_VALUE, ENTRY_BLOCK_PTR, find_edge(), first, edge::flags, gcc_assert, gcc_unreachable, get_cases_for_edge(), GOTO_DESTINATION, i, label_to_block, last, n, NULL, ret, edge::src, ssa_redirect_edge(), SWITCH_LABELS, tree_block_label(), TREE_CHAIN, TREE_CODE, tree_try_redirect_by_replacing_jump(), TREE_VEC_ELT, TREE_VEC_LENGTH, and vec.
Referenced by tree_redirect_edge_and_branch_force().
| static basic_block tree_redirect_edge_and_branch_force | ( | edge | e, | |
| basic_block | dest | |||
| ) | [static] |
Definition at line 4604 of file tree-cfg.c.
References gcc_assert, NULL, and tree_redirect_edge_and_branch().
| static basic_block tree_split_block | ( | basic_block | bb, | |
| void * | stmt | |||
| ) | [static] |
Definition at line 4617 of file tree-cfg.c.
References bsi_end_p(), bsi_insert_after(), BSI_NEW_STMT, bsi_next(), bsi_remove(), bsi_start(), bsi_stmt(), create_empty_bb(), FOR_EACH_EDGE, NULL, edge::src, and TREE_CODE.
| static basic_block tree_split_edge | ( | edge | edge_in | ) | [static] |
Definition at line 3237 of file tree-cfg.c.
References basic_block_def::count, create_empty_bb(), dest, edge::dest, EDGE_ABNORMAL, EDGE_FALLTHRU, EDGE_FREQUENCY, find_edge(), edge::flags, basic_block_def::frequency, gcc_assert, make_edge(), basic_block_def::prev_bb, redirect_edge_and_branch(), REG_BR_PROB_BASE, reinstall_phi_args(), src, and edge::src.
| static edge tree_try_redirect_by_replacing_jump | ( | edge | e, | |
| basic_block | target | |||
| ) | [static] |
Definition at line 4462 of file tree-cfg.c.
References b, bsi_end_p(), bsi_last(), bsi_remove(), bsi_stmt(), dest, EDGE_COUNT, EDGE_FALLTHRU, EDGE_SUCC, edge::flags, NULL, src, edge::src, ssa_redirect_edge(), and TREE_CODE.
Referenced by tree_redirect_edge_and_branch().
| static int tree_verify_flow_info | ( | void | ) | [static] |
Definition at line 3664 of file tree-cfg.c.
References basic_block_def::aux, bsi_end_p(), bsi_last(), bsi_next(), bsi_start(), bsi_stmt(), c, CASE_LABEL, CASE_LOW, CDI_DOMINATORS, COND_EXPR_ELSE, COND_EXPR_THEN, current_function_decl, decl_function_context(), DECL_NAME, DECL_NONLOCAL, edge::dest, dest, dom_computed, DOM_NO_FAST_QUERY, EDGE_ABNORMAL, EDGE_COUNT, EDGE_FALLTHRU, EDGE_FALSE_VALUE, EDGE_SUCC, EDGE_TRUE_VALUE, ENTRY_BLOCK_PTR, err, error(), EXIT_BLOCK_PTR, extract_true_false_edges_from_block(), edge::flags, flags, FOR_EACH_BB, FOR_EACH_EDGE, fprintf(), gcc_assert, GOTO_DESTINATION, has_label_p(), i, IDENTIFIER_POINTER, basic_block_def::index, is_ctrl_stmt(), lab, LABEL_EXPR_LABEL, label_to_block, n, NULL_TREE, prev, print_generic_expr(), simple_goto_p(), edge::src, stmt_ends_bb_p(), SWITCH_LABELS, TREE_CODE, tree_int_cst_lt(), TREE_VEC_ELT, TREE_VEC_LENGTH, vec, and verify_dominators().
Definition at line 1714 of file tree-cfg.c.
References call_expr_flags(), ECF_CONST, ECF_PURE, get_callee_fndecl(), GS_TREE_NOTHROW, GS_TREE_SIDE_EFFECTS, TREE_NOTHROW, and TREE_SIDE_EFFECTS.
Referenced by remove_useless_stmts_1().
Definition at line 985 of file tree-cfg.c.
References get_eh_region_tree_label(), basic_block_def::index, label_to_block, new_label, old_label, and set_eh_region_tree_label().
Referenced by cleanup_dead_labels().
| VEC | ( | tree | ) |
Definition at line 2124 of file tree-cfg.c.
References bb_for_stmt(), bsi_end_p(), bsi_last(), bsi_stmt(), CDI_DOMINATORS, cleanup_control_expr_graph(), FOR_EACH_BB, free_dominance_info(), last_stmt(), modified_noreturn_calls, noreturn_call_p(), NULL, remove_fallthru_edge(), split_block(), TREE_CODE, VEC_length, and VEC_pop.
Definition at line 3296 of file tree-cfg.c.
References CHECK_OP, COND_EXPR_COND, CONSTANT_CLASS_P, error(), handled_component_p(), is_gimple_lvalue(), is_gimple_reg(), NULL, SSA_NAME, SSA_NAME_IN_FREE_LIST, TREE_ADDRESSABLE, TREE_CODE, TREE_OPERAND, TREE_TYPE, TYPE_P, and x.
Definition at line 3559 of file tree-cfg.c.
References htab_find_slot(), INSERT, NULL, and tree_node_can_be_shared().
Referenced by verify_stmts().
Definition at line 3478 of file tree-cfg.c.
References addr(), debug_generic_stmt(), error(), fail, is_gimple_stmt(), lookup_stmt_eh_region(), NULL, tree_can_throw_internal(), tree_could_throw_p(), verify_expr(), and walk_tree().
Referenced by verify_stmts().
Definition at line 3582 of file tree-cfg.c.
Referenced by build_tree_cfg(), execute_todo(), tree_ssa_iv_optimize(), and verify_ssa().
struct cfg_stats_d cfg_stats [static] |
Definition at line 98 of file tree-cfg.c.
Referenced by build_tree_cfg(), dump_cfg_stats(), and stmt_starts_bb_p().
htab_t edge_to_cases [static] |
Definition at line 88 of file tree-cfg.c.
Referenced by end_recording_case_labels(), get_cases_for_edge(), record_switch_edge(), recording_case_labels_p(), and start_recording_case_labels().
bool found_computed_goto [static] |
const int initial_cfg_capacity = 20 [static] |
Definition at line 59 of file tree-cfg.c.
Referenced by build_tree_cfg(), and init_empty_tree_cfg().
tree* label_for_bb [static] |
Definition at line 981 of file tree-cfg.c.
Referenced by cleanup_dead_labels(), fixup_reorder_chain(), main_block_label(), and update_eh_label().
Initial value:
{
"cfg",
NULL,
execute_build_cfg,
NULL,
NULL,
0,
TV_TREE_CFG,
PROP_gimple_leh,
PROP_cfg,
0,
0,
TODO_verify_stmts,
0
}
Definition at line 230 of file tree-cfg.c.
Referenced by init_optimization_passes(), and init_tree_optimization_passes().
Initial value:
{
"mergephi",
gate_merge_phi,
merge_phi_nodes,
NULL,
NULL,
0,
TV_TREE_MERGE_PHI,
PROP_cfg | PROP_ssa,
0,
0,
0,
TODO_dump_func | TODO_ggc_collect
| TODO_verify_ssa,
0
}
Definition at line 4407 of file tree-cfg.c.
Referenced by init_optimization_passes(), and init_tree_optimization_passes().
Initial value:
{
"useless",
NULL,
remove_useless_stmts,
NULL,
NULL,
0,
0,
PROP_gimple_any,
0,
0,
0,
TODO_dump_func,
0
}
Definition at line 1875 of file tree-cfg.c.
Referenced by init_optimization_passes(), and init_tree_optimization_passes().
Initial value:
{
"crited",
NULL,
split_critical_edges,
NULL,
NULL,
0,
TV_TREE_SPLIT_EDGES,
PROP_cfg,
PROP_no_crit_edges,
0,
0,
TODO_dump_func,
0
}
Definition at line 5627 of file tree-cfg.c.
Referenced by init_optimization_passes(), and init_tree_optimization_passes().
Initial value:
{
NULL,
NULL,
execute_warn_function_return,
NULL,
NULL,
0,
0,
PROP_cfg,
0,
0,
0,
0,
0
}
Definition at line 5827 of file tree-cfg.c.
Referenced by init_optimization_passes(), and init_tree_optimization_passes().
Initial value:
{
"tree",
tree_verify_flow_info,
tree_dump_bb,
create_bb,
tree_redirect_edge_and_branch,
tree_redirect_edge_and_branch_force,
remove_bb,
tree_split_block,
tree_move_block_after,
tree_can_merge_blocks_p,
tree_merge_blocks,
tree_predict_edge,
tree_predicted_by_p,
tree_can_duplicate_bb_p,
tree_duplicate_bb,
tree_split_edge,
tree_make_forwarder_block,
NULL,
tree_block_ends_with_call_p,
tree_block_ends_with_condjump_p,
tree_flow_call_edges_add,
tree_execute_on_growing_pred,
tree_execute_on_shrinking_pred,
}
Definition at line 5576 of file tree-cfg.c.
1.5.6