#include "config.h"#include "system.h"#include "rtl.h"#include "hard-reg-set.h"#include "basic-block.h"#include "ssa.h"#include "insn-config.h"#include "recog.h"#include "output.h"#include "errors.h"#include "ggc.h"#include "df.h"#include "function.h"

Go to the source code of this file.
| #define EIE | ( | x, | |||
| y | ) | EDGE_INDEX (edges, x, y) |
Definition at line 123 of file ssa-ccp.c.
Referenced by examine_flow_edges(), ssa_const_prop(), visit_expression(), and visit_phi_node().
| #define SSA_NAME | ( | x | ) | REGNO (SET_DEST (x)) |
Definition at line 122 of file ssa-ccp.c.
Referenced by abnormal_ssa_name_p(), add_call_clobber_ops(), add_call_read_ops(), add_pointed_to_expr(), add_pointed_to_var(), add_stmt_operand(), add_virtual_operand(), address_analysis(), alias_get_name(), analyzable_condition(), analyze_evolution_in_loop(), analyze_indirect_ref(), analyze_initial_condition(), analyze_scalar_evolution(), analyze_scalar_evolution_1(), append_v_may_def(), append_vuse(), apply_return_prediction(), assign_vars(), associate_equivalences_with_edges(), bitmap_find_leader(), bitmap_insert_into_set(), bitmap_set_contains(), bitmap_set_replace_value(), build_assert_expr_for(), build_tree_conflict_graph(), can_convert_to_perfect_nest(), ccp_fold(), ccp_initialize(), ccp_visit_stmt(), change_partition_var(), check_all_va_list_escapes(), check_for_plus_in_loops(), check_for_plus_in_loops_1(), check_loop_closed_ssa_use(), check_phi_redundancy(), check_va_list_escapes(), chrec_contains_symbols(), chrec_contains_symbols_defined_in_loop(), cleanup_v_may_defs(), coalesce_asm_operands(), coalesce_phi_operands(), collect_object_sizes_for(), collect_points_to_info_r(), compact_var_map(), compare_values_warnv(), complex_visit_stmt(), compute_avail(), compute_builtin_object_size(), compute_immediate_uses_for_phi(), conditional_replacement(), contains_abnormal_ssa_name_p(), copy_prop_visit_assignment(), copy_prop_visit_cond_stmt(), copy_prop_visit_phi_node(), copy_prop_visit_stmt(), copy_rename_partition_coalesce(), cp_tree_equal(), cprop_into_stmt(), cprop_into_successor_phis(), cprop_operand(), create_ssa_artficial_load_stmt(), create_ssa_var_map(), create_temp(), delete_tree_ssa(), determine_use_iv_cost_condition(), dom_opt_finalize_block(), dump_copy_of(), dump_generic_node(), dump_immediate_uses_for(), dump_may_aliases_for(), dump_variable(), eliminate(), eliminate_build(), eliminate_not_pairs(), eliminate_plus_minus_pair(), eliminate_redundant_computations(), eliminate_virtual_phis(), estimate_num_insns_1(), evolution_function_is_invariant_rec_p(), execute_cse_reciprocals(), exist_non_indexing_operands_for_use_p(), expand_complex_move(), expand_complex_operations_1(), expand_expr_real_1(), expand_simple_operations(), expr_expected_value(), expr_invariant_in_loop_p(), expr_object_size(), extract_component(), extract_range_from_assert(), extract_range_from_binary_expr(), extract_range_from_expr(), extract_range_from_unary_expr(), finalize_ssa_v_may_defs(), finalize_ssa_v_must_defs(), finalize_ssa_vuses(), find_assert_locations(), find_depends(), find_equivalent_equality_comparison(), find_givs_in_stmt_scev(), find_induction_var_from_exit_cond(), find_interesting_uses_address(), find_interesting_uses_cond(), find_interesting_uses_op(), find_interesting_uses_outer_or_nonlin(), find_interesting_uses_stmt(), find_lattice_value(), find_tail_calls(), find_uses_to_rename_use(), find_va_list_reference(), find_what_p_points_to(), first_imm_use_stmt(), first_readonly_imm_use(), fold_builtin_object_size(), fold_const_aggregate_ref(), follow_ssa_edge_in_condition_phi_branch(), follow_ssa_edge_in_rhs(), for_each_index(), for_each_memref(), force_move_till(), force_move_till_expr(), forward_propagate_addr_expr_1(), forward_propagate_addr_into_variable_array_index(), forward_propagate_into_cond_1(), gather_mem_refs_stmt(), gcc2gs(), gcc_loop_to_lambda_loop(), gcc_tree_to_linear_expression(), gen_lsm_tmp_name(), generate_copy_inout(), get_base_for(), get_constraint_exp_from_ssa_var(), get_constraint_for(), get_current_def(), get_default_value(), get_eq_name(), get_expr_operands(), get_indirect_ref_operands(), get_maxval_strlen(), get_phi_state(), get_rank(), get_reaching_def(), get_ref_tag(), get_scalar_evolution(), get_single_immediate_use(), get_strlen(), get_subvars_for_var(), get_value(), get_value_handle(), get_virtual_var(), gimplify_expr(), gimplify_modify_expr(), identify_jump_threads(), idx_find_step(), idx_remove_ssa_names(), if_convertible_modify_expr_p(), independent_of_stmt_p(), infer_loop_bounds_from_undefined(), insert_aux(), insert_backedge_copies(), insert_phi_nodes_for(), insert_updated_phi_nodes_for(), instantiate_parameters_1(), interpret_rhs_modify_expr(), is_escape_site(), is_gimple_formal_tmp_reg(), is_gimple_formal_tmp_var(), is_gimple_non_addressable(), is_gimple_reg(), is_gimple_variable(), is_phi_for_stmt(), is_undefined_value(), iterative_hash_expr(), lhs_may_store_to(), linearize_expr(), linearize_expr_tree(), link_imm_use(), lookup_avail_expr(), loop_closed_phi_def(), loop_depth_of_name(), make_node_stat(), make_phi_node(), make_ssa_name(), mark_all_v_defs(), mark_all_v_defs_1(), mark_all_vars_used_1(), mark_def_interesting(), mark_def_sites(), mark_operand_necessary(), may_propagate_copy(), may_propagate_copy_into_asm(), maybe_lvalue_p(), memory_ssa_name_same(), movement_possibility(), object_analysis(), operand_equal_for_phi_arg_p(), optimize_unexecutable_edges(), outermost_invariant_loop(), outermost_invariant_loop_expr(), phi_ssa_name_p(), phi_translate(), plus_expr_object_size(), poolify_tree(), prepare_decl_rtl(), prepare_def_operand_for_rename(), prepare_use_operand_for_rename(), print_call_name(), print_node(), process_assignment(), propagate_necessity(), propagate_rhs_into_lhs(), propagate_tree_value(), protect_loop_closed_ssa_form_use(), ptr_decl_may_alias_p(), reassociate_bb(), recalculate_used_alone(), record_const_or_copy(), record_edge_info(), record_equality(), record_equivalences_from_stmt(), record_invariant(), record_single_argument_cond_exprs(), record_temporary_equivalence(), record_temporary_equivalences_from_phis(), record_temporary_equivalences_from_stmts_at_dest(), release_defs(), release_ssa_name(), remove_dead_inserted_code(), remove_forwarder_block_with_phi(), remove_range_assertions(), rename_def_op(), rename_ssa_copies(), rename_use_op(), replace_exp_1(), replace_immediate_uses(), replace_phi_args_in(), replace_uses_in(), replace_vuses_in(), restore_currdefs_to_original_value(), rewrite_address_base(), rewrite_finalize_block(), rewrite_operand(), rewrite_stmt(), rewrite_to_new_ssa_names_def(), rewrite_to_new_ssa_names_use(), rewrite_trees(), rewrite_update_phi_arguments(), rewrite_use_compare(), root_var_init(), set_component_ssa_name(), set_current_def(), set_def_block(), set_default_def(), set_phi_state(), set_rhs(), set_scalar_evolution(), set_value_handle(), should_break_up_subtract(), simple_iv_increment_p(), simple_operand_p(), simplify_cond(), simplify_cond_and_lookup_avail_expr(), simplify_cond_using_ranges(), simplify_control_stmt_condition(), simplify_not_neg_expr(), simplify_rhs_and_lookup_avail_expr(), simplify_stmt_using_ranges(), simplify_switch_and_lookup_avail_expr(), simplify_switch_expr(), single_reachable_address(), slpeel_update_phi_nodes_for_guard2(), slpeel_update_phis_for_duplicate_loop(), sort_by_operand_rank(), split_loop_exit_edge(), ssa_ccp_substitute_constants(), ssa_mark_phi_uses(), ssa_rewrite_phi_arguments(), stmt_interesting_for_vrp(), stmt_may_generate_copy(), substitute_single_use_vars(), thread_across_edge(), tree_code_size(), tree_expr_nonnegative_warnv_p(), tree_expr_nonzero_warnv_p(), tree_merge_blocks(), tree_node_can_be_shared(), tree_node_structure(), tree_optimize_tail_calls_1(), tree_ssa_forward_propagate_single_use_vars(), tree_swap_operands_p(), tree_unroll_loop(), try_look_through_load(), unmodifiable_var_p(), update_alias_info(), update_all_vops(), update_phi_components(), va_list_counter_bump(), va_list_counter_struct_op(), va_list_ptr_read(), va_list_ptr_write(), valid_in_set(), valid_value_p(), var_to_partition(), var_union(), VEC(), vect_address_analysis(), vect_compute_data_ref_alignment(), vect_create_data_ref_ptr(), vect_create_destination_var(), vect_get_vec_def_for_operand(), vect_is_simple_cond(), vect_is_simple_reduction(), vect_is_simple_use(), vect_object_analysis(), vectorizable_assignment(), vectorizable_condition(), vectorizable_live_operation(), vectorizable_load(), vectorizable_operation(), verify_expr(), verify_imm_links(), verify_phi_args(), verify_ssa(), verify_ssa_name(), verify_stmts(), visit_assignment(), visit_phi_node(), vrp_evaluate_conditional_warnv(), vrp_expr_computes_nonzero(), vrp_visit_assignment(), vrp_visit_phi_node(), walk_tree(), walk_use_def_chains(), walk_use_def_chains_1(), warn_uninitialized_phi(), and warn_uninitialized_var().
| enum latticevalue |
Definition at line 211 of file ssa-ccp.c.
References DF_INSN_DEFS, DF_REF_REGNO, value::lattice_val, df_link::next, df_link::ref, SET_BIT, and UNDEFINED.
Referenced by visit_expression().
Definition at line 226 of file ssa-ccp.c.
References DF_INSN_DEFS, DF_REF_REGNO, value::lattice_val, df_link::next, df_link::ref, SET_BIT, and VARYING.
Referenced by visit_expression().
| static void examine_flow_edges | ( | ) | [static] |
Definition at line 626 of file ssa-ccp.c.
References edge::dest, EIE, basic_block_def::end, EXIT_BLOCK_PTR, first_insn_after_basic_block_note(), basic_block_def::head, basic_block_def::index, INSN_P, NEXT_INSN, NULL, PHI_NODE_P, SET_BIT, edge::src, basic_block_def::succ, edge::succ_next, TEST_BIT, visit_expression(), and visit_phi_node().
Referenced by ssa_const_prop().
| static void follow_def_use_chains | ( | ) | [static] |
Definition at line 694 of file ssa-ccp.c.
References BLOCK_FOR_INSN, BLOCK_NUM, DF_REF_INSN, member(), df_link::next, PHI_NODE_P, df_link::ref, df::regs, RESET_BIT, sbitmap_first_set_bit(), TEST_BIT, reg_info::uses, visit_expression(), and visit_phi_node().
Referenced by ssa_const_prop().
| static void optimize_unexecutable_edges | ( | struct edge_list * | edges, | |
| sbitmap | executable_edges | |||
| ) | [static] |
Definition at line 737 of file ssa-ccp.c.
References BLOCK_FOR_INSN, condjump_p(), edge::dest, df_insn_modify(), EDGE_ABNORMAL, EDGE_FALLTHRU, emit_barrier_after(), basic_block_def::end, EXIT_BLOCK_PTR, first_insn_after_basic_block_note(), edge::flags, FOR_EACH_BB, fprintf(), gen_rtx_LABEL_REF, GET_CODE, i, INDEX_EDGE, insn, INSN_CODE, JUMP_LABEL, NEXT_INSN, NOTE_INSN_DELETED, NOTE_LINE_NUMBER, NULL, NUM_EDGES, PATTERN, PHI_NODE_P, Pmode, basic_block_def::pred, PUT_CODE, remove_edge(), remove_phi_alternative(), rtl_dump_file, SET_SRC, simplejump_p(), edge::src, SSA_NAME, basic_block_def::succ, edge::succ_next, and TEST_BIT.
Referenced by ssa_const_prop().
Definition at line 77 of file cplus-dem.c.
| static void visit_phi_node PARAMS | ( | (rtx, basic_block) | ) | [static] |
| static void ssa_ccp_df_delete_unreachable_insns | ( | ) | [static] |
Definition at line 929 of file ssa-ccp.c.
References b, BB_REACHABLE, BLOCK_FOR_INSN, df_insn_delete(), basic_block_def::end, end, find_unreachable_blocks(), basic_block_def::flags, FOR_EACH_BB_REVERSE, GET_CODE, basic_block_def::head, JUMP_LABEL, next, NEXT_INSN, NULL_RTX, PATTERN, start, and tmp.
Referenced by ssa_const_prop().
| static void ssa_ccp_substitute_constants | ( | ) | [static] |
Definition at line 850 of file ssa-ccp.c.
References BLOCK_FOR_INSN, value::const_value, CONSTANT, df_insn_modify(), DF_REF_INSN, FIRST_PSEUDO_REGISTER, fprintf(), GET_CODE, i, INSN_CODE, INSN_DELETED_P, INSN_UID, df_link::next, NOTE_INSN_DELETED, NOTE_LINE_NUMBER, PATTERN, PHI_NODE_P, df_link::ref, regno_reg_rtx, df::regs, rtl_dump_file, SET_SRC, single_set, ssa_definition, SSA_NAME, reg_info::uses, validate_replace_src(), VARRAY_RTX, and VARRAY_SIZE.
Referenced by ssa_const_prop().
| void ssa_const_prop | ( | ) |
Definition at line 981 of file ssa-ccp.c.
References value::const_value, create_edge_list(), edge::dest, df_analyse(), df_finish, DF_HARD_REGS, df_init(), DF_RD_CHAIN, DF_REG_INFO, DF_RU_CHAIN, EIE, end_alias_analysis(), ENTRY_BLOCK_PTR, examine_flow_edges(), FIRST_PSEUDO_REGISTER, follow_def_use_chains(), free(), free_edge_list(), i, index(), init_alias_analysis(), last_basic_block, value::lattice_val, NULL, NUM_EDGES, optimize_unexecutable_edges(), sbitmap_alloc(), sbitmap_free, sbitmap_zero(), SET_BIT, edge::src, ssa_ccp_df_delete_unreachable_insns(), ssa_ccp_substitute_constants(), ssa_definition, ssa_fast_dce(), edge::succ_next, UNDEFINED, VARRAY_SIZE, VARYING, and xmalloc().
Referenced by rest_of_compilation().
Definition at line 1147 of file ssa-ccp.c.
References BLOCK_FOR_INSN, df_analyse(), DF_HARD_REGS, df_insn_delete(), DF_RD_CHAIN, DF_REF_INSN, DF_REG_INFO, DF_RU_CHAIN, FIRST_PSEUDO_REGISTER, for_each_rtx(), GET_CODE, INSN_DELETED_P, mark_references(), df_link::next, NOTE_INSN_DELETED, NOTE_LINE_NUMBER, NULL, PATTERN, df_link::ref, RESET_BIT, sbitmap_alloc(), sbitmap_first_set_bit(), sbitmap_free, sbitmap_ones(), side_effects_p(), ssa_definition, VARRAY_RTX, VARRAY_SIZE, and worklist.
Referenced by ssa_const_prop().
| static void visit_expression | ( | rtx | insn, | |
| basic_block | block | |||
| ) | [static] |
Definition at line 242 of file ssa-ccp.c.
References value::const_value, CONSTANT, defs_to_undefined(), defs_to_varying(), dest, edge::dest, EDGE_FALLTHRU, EIE, basic_block_def::end, FIRST_PSEUDO_REGISTER, edge::flags, GET_CODE, GET_MODE, GET_RTX_CLASS, index(), value::lattice_val, mode, new_value, NULL, PATTERN, pc_rtx, pc_set(), PHI_NODE_P, REG, REGNO, SET_BIT, SET_DEST, SET_SRC, simplify_binary_operation(), simplify_relational_operation(), simplify_ternary_operation(), simplify_unary_operation(), single_set, src, edge::src, basic_block_def::succ, edge::succ_next, TEST_BIT, UNDEFINED, VARYING, x, and XEXP.
Referenced by examine_flow_edges(), and follow_def_use_chains().
| static void visit_phi_node | ( | rtx | phi_node, | |
| basic_block | block | |||
| ) | [static] |
Definition at line 140 of file ssa-ccp.c.
References BASIC_BLOCK, value::const_value, CONSTANT, EIE, GET_NUM_ELEM, i, INTVAL, value::lattice_val, NULL, PATTERN, REGNO, RTVEC_ELT, SET_BIT, SET_SRC, SSA_NAME, TEST_BIT, UNDEFINED, VARYING, and XVEC.
Referenced by examine_flow_edges(), and follow_def_use_chains().
struct df* df_analyzer [static] |
Definition at line 109 of file ssa-ccp.c.
Referenced by RGN_CFLOW_MGR::_acquire_reach_prob_info(), analyze_insns_in_loop(), INTERVAL_PROCESSOR::Construct_Loops(), Finalize_BB(), fix_irreducible_loops(), Freq_Order_Blocks(), get_loop_exit_edges(), INTERVAL_PROCESSOR::Is_Backedge_Source(), INTERVAL_PROCESSOR::Is_Backedge_Target(), and unloop().
sbitmap executable_blocks [static] |
sbitmap executable_edges [static] |
edge flow_edges [static] |
1.5.6