osprey/kg++fe/gnu/ssa-ccp.c File Reference

#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"

Include dependency graph for ssa-ccp.c:

Go to the source code of this file.

Data Types

type  value

Defines

#define SSA_NAME(x)   REGNO (SET_DEST (x))
#define EIE(x, y)   EDGE_INDEX (edges, x, y)

Enumerations

enum  latticevalue {
  UNDEFINED, CONSTANT, VARYING, UNDEFINED,
  CONSTANT, VARYING, UNINITIALIZED = 0, UNDEFINED,
  UNKNOWN_VAL, CONSTANT, VARYING
}

Functions/Subroutines

static void visit_phi_node PARAMS ((rtx, basic_block))
static void defs_to_undefined PARAMS ((rtx))
static void examine_flow_edges PARAMS ((void))
static int mark_references PARAMS ((rtx *, void *))
static void
optimize_unexecutable_edges 
PARAMS ((struct edge_list *, sbitmap))
static void ssa_fast_dce PARAMS ((struct df *))
static void visit_phi_node (rtx phi_node, basic_block block)
static void defs_to_undefined (rtx insn)
static void defs_to_varying (rtx insn)
static void visit_expression (rtx insn, basic_block block)
static void examine_flow_edges ()
static void follow_def_use_chains ()
static void optimize_unexecutable_edges (struct edge_list *edges, sbitmap executable_edges)
static void ssa_ccp_substitute_constants ()
static void ssa_ccp_df_delete_unreachable_insns ()
void ssa_const_prop ()
static int mark_references (rtx *current_rtx, void *data)
static void ssa_fast_dce (struct df *df)

Variables

static valuevalues
static sbitmap executable_blocks
static sbitmap executable_edges
static edgeedge_info
static struct edge_listedges
static struct dfdf_analyzer
static edge flow_edges
static sbitmap ssa_edges


Define Documentation

#define EIE ( x,
 )     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 (  )     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().


Enumeration Type Documentation

Enumerator:
UNDEFINED 
CONSTANT 
VARYING 
UNDEFINED 
CONSTANT 
VARYING 
UNINITIALIZED 
UNDEFINED 
UNKNOWN_VAL 
CONSTANT 
VARYING 

Definition at line 79 of file ssa-ccp.c.


Function Documentation

static void defs_to_undefined ( rtx  insn  )  [static]

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().

static void defs_to_varying ( rtx  insn  )  [static]

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]

static void follow_def_use_chains (  )  [static]

static int mark_references ( rtx current_rtx,
void data 
) [static]

Definition at line 1094 of file ssa-ccp.c.

References dest, for_each_rtx(), GET_CODE, NULL_RTX, REG, REGNO, SET, SET_BIT, SET_DEST, SET_SRC, worklist, x, and XEXP.

Referenced by mark_references(), and ssa_fast_dce().

static void optimize_unexecutable_edges ( struct edge_list edges,
sbitmap  executable_edges 
) [static]

static void ssa_fast_dce PARAMS ( (struct df *)   )  [static]

static void optimize_unexecutable_edges PARAMS ( (struct edge_list *, sbitmap  )  [static]

static int mark_references PARAMS ( (rtx *, void *)   )  [static]

static void examine_flow_edges PARAMS ( (void  )  [static, read]

Definition at line 77 of file cplus-dem.c.

static void defs_to_undefined PARAMS ( (rtx  )  [static]

static void visit_phi_node PARAMS ( (rtx, basic_block  )  [static]

static void ssa_ccp_df_delete_unreachable_insns (  )  [static]

static void ssa_ccp_substitute_constants (  )  [static]

void ssa_const_prop (  ) 

static void ssa_fast_dce ( struct df df  )  [static]

static void visit_expression ( rtx  insn,
basic_block  block 
) [static]

static void visit_phi_node ( rtx  phi_node,
basic_block  block 
) [static]


Variable Documentation

struct df* df_analyzer [static]

Definition at line 112 of file ssa-ccp.c.

edge* edge_info [static]

Definition at line 106 of file ssa-ccp.c.

struct edge_list* edges [static]

Definition at line 100 of file ssa-ccp.c.

Definition at line 103 of file ssa-ccp.c.

edge flow_edges [static]

Definition at line 115 of file ssa-ccp.c.

sbitmap ssa_edges [static]

Definition at line 119 of file ssa-ccp.c.

value* values [static]

Definition at line 97 of file ssa-ccp.c.


Generated on Wed Apr 8 15:44:48 2009 for Open64 by  doxygen 1.5.6