GCC Middle and Back End API Reference
tree-ssanames.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ptr_info_def
 
class  flow_sensitive_info_storage
 

Macros

#define SSANAMES(fun)   (fun)->gimple_df->ssa_names
 
#define DEFAULT_DEFS(fun)   (fun)->gimple_df->default_defs
 
#define num_ssa_names   (vec_safe_length (cfun->gimple_df->ssa_names))
 
#define ssa_name(i)   ((*cfun->gimple_df->ssa_names)[(i)])
 
#define FOR_EACH_SSA_NAME(I, VAR, FN)
 

Functions

bool set_range_info (tree, const vrange &)
 
void set_nonzero_bits (tree, const wide_int &)
 
void set_bitmask (tree, const wide_int &value, const wide_int &mask)
 
wide_int get_nonzero_bits (const_tree)
 
bool ssa_name_has_boolean_range (tree)
 
void init_ssanames (struct function *, int)
 
void fini_ssanames (struct function *)
 
void ssanames_print_statistics (void)
 
tree make_ssa_name_fn (struct function *, tree, gimple *, unsigned int version=0)
 
void init_ssa_name_imm_use (tree)
 
void release_ssa_name_fn (struct function *, tree)
 
bool get_ptr_info_alignment (struct ptr_info_def *, unsigned int *, unsigned int *)
 
void mark_ptr_info_alignment_unknown (struct ptr_info_def *)
 
void set_ptr_info_alignment (struct ptr_info_def *, unsigned int, unsigned int)
 
void adjust_ptr_info_misalignment (struct ptr_info_def *, poly_uint64)
 
struct ptr_info_defget_ptr_info (tree)
 
void set_ptr_nonnull (tree)
 
tree copy_ssa_name_fn (struct function *, tree, gimple *)
 
void duplicate_ssa_name_ptr_info (tree, struct ptr_info_def *)
 
tree duplicate_ssa_name_fn (struct function *, tree, gimple *)
 
void duplicate_ssa_name_range_info (tree dest, tree src)
 
void reset_flow_sensitive_info (tree)
 
void reset_flow_sensitive_info_in_bb (basic_block)
 
void release_defs (gimple *)
 
void replace_ssa_name_symbol (tree, tree)
 
void flush_ssaname_freelist (void)
 
tree make_ssa_name (tree var, gimple *stmt=NULL)
 
tree copy_ssa_name (tree var, gimple *stmt=NULL)
 
tree duplicate_ssa_name (tree var, gimple *stmt)
 
void release_ssa_name (tree name)
 
tree make_temp_ssa_name (tree type, gimple *stmt, const char *name)
 

Macro Definition Documentation

◆ DEFAULT_DEFS

#define DEFAULT_DEFS ( fun)    (fun)->gimple_df->default_defs

◆ FOR_EACH_SSA_NAME

◆ num_ssa_names

#define num_ssa_names   (vec_safe_length (cfun->gimple_df->ssa_names))

Referenced by add_new_name_mapping(), equiv_oracle::add_partial_equiv(), alloc_expression_id(), block_range_cache::block_range_cache(), ccp_initialize(), check_all_va_list_escapes(), compute_builtin_object_size(), compute_dependence_clique(), create_coalesce_list(), debug_ter(), do_dbg_cnt(), do_rpo_vn_1(), assume_query::dump(), equiv_oracle::dump(), range_def_chain::dump(), ssa_cache::dump(), gimple_ranger::dump_bb(), dump_part_var_map(), dump_replaceable_exprs(), dump_var_map(), equiv_oracle::equiv_oracle(), equiv_oracle::equiv_set(), gimple_ranger::export_global_ranges(), find_equal_ptrs(), find_va_list_reference(), free_loop_data(), free_temp_expr_table(), fwprop_set_lattice_val(), pointer_equiv_analyzer::get_equiv(), infer_range_manager::get_nonzero(), ssa_equiv_stack::get_replacement(), get_ssa_name_ann(), get_stridx_plus_constant(), get_undefined_value_partitions(), gimple_lower_bitint(), gimple_ranger::gimple_ranger(), range_def_chain::has_def_chain(), infer_range_manager::infer_range_manager(), init_copy_prop(), init_pre(), init_reassoc(), init_update_ssa(), jump_threader::jump_threader(), ssa_cache::merge_range(), ssa_lazy_cache::merge_range(), new_temp_expr_table(), object_sizes_grow(), optimize_va_list_gpr_fpr_size(), pointer_equiv_analyzer::pointer_equiv_analyzer(), phi_analyzer::process_phi(), ssa_equiv_stack::push_replacement(), range_def_chain::range_def_chain(), range_def_chain::register_dependency(), release_free_names_and_compact_live_names(), remove_ssa_form(), rewrite_into_loop_closed_ssa_1(), temporal_cache::set_always_current(), block_range_cache::set_bb_range(), pointer_equiv_analyzer::set_global_equiv(), ssa_cache::set_range(), ssa_lazy_cache::set_range(), temporal_cache::set_timestamp(), ssa_equiv_stack::ssa_equiv_stack(), temporal_cache::temporal_cache(), tree_dce_init(), tree_lower_complex(), tree_ssa_iv_optimize_init(), va_list_counter_bump(), va_list_counter_struct_op(), va_list_ptr_read(), va_list_ptr_write(), verify_ssa(), verify_ssaname_freelists(), and zero_length_string().

◆ ssa_name

#define ssa_name ( i)    ((*cfun->gimple_df->ssa_names)[(i)])

Referenced by add_exit_phis(), add_field_for_name(), path_range_query::adjust_for_non_null_uses(), attempt_coalesce(), coalesce_bitint(), coalesce_partitions(), compute_builtin_object_size(), compute_dependence_clique(), path_range_query::compute_exit_dependencies(), compute_optimized_partition_bases(), path_range_query::compute_ranges_in_block(), create_loads_and_stores_for_name(), debug_ter(), delete_update_ssa(), range_def_chain::depend1(), range_def_chain::depend2(), phi_group::dump(), path_range_query::dump(), pointer_query::dump(), block_range_cache::dump(), assume_query::dump(), equiv_chain::dump(), equiv_oracle::dump(), block_range_cache::dump(), range_def_chain::dump(), ssa_cache::dump(), back_threader::dump(), gimple_ranger::dump_bb(), dump_coalesce_list(), dump_names_replaced_by(), dump_part_var_map(), dump_replaceable_exprs(), dump_update_ssa(), dump_var_map(), rpo_elim::eliminate_avail(), expand_expr_real_1(), gimple_ranger::export_global_ranges(), fail_abnormal_edge_coalesce(), back_threader::find_paths_to_names(), fold_builtin_alloca_with_align(), get_component_ssa_name(), gori_export_iterator::get_name(), equiv_relation_iterator::get_name(), get_undefined_value_partitions(), gimple_lower_bitint(), gimplify_size_expressions(), init_parameter_lattice_values(), init_reassoc(), initialize_conflict_count(), input_ssa_names(), ssa_name_limit_t::leave_phi(), make_temp_ssa_name(), mark_def_interesting(), move_sese_region_to_fn(), ssa_name_limit_t::next_phi(), partition_to_var(), partition_view_init(), prepare_names_to_update(), register_new_update_set(), release_defs_bitset(), release_free_names_and_compact_live_names(), remove_unreachable::remove_and_update_globals(), replace_ssa_name_symbol(), sese_insert_phis_for_liveouts(), sese_reset_debug_liveouts(), set_component_ssa_name(), set_var_live_on_entry(), simple_dce_from_worklist(), update_parameter_components(), update_ssa(), relation_oracle::valid_equivs(), verify_def(), verify_ssa_name(), verify_ssaname_freelists(), verify_use(), and ssa_name_limit_t::visit_phi().

◆ SSANAMES

Function Documentation

◆ adjust_ptr_info_misalignment()

void adjust_ptr_info_misalignment ( struct ptr_info_def * pi,
poly_uint64 increment )
extern
If pointer described by PI has known alignment, increase its known
misalignment by INCREMENT modulo its current alignment.   

References ggc_alloc().

◆ copy_ssa_name()

◆ copy_ssa_name_fn()

tree copy_ssa_name_fn ( struct function * fn,
tree name,
gimple * stmt )
extern
Creates a new SSA name using the template NAME tobe defined by
statement STMT in function FN.   

References make_ssa_name_fn(), SET_SSA_NAME_VAR_OR_IDENTIFIER, SSA_NAME_IDENTIFIER, SSA_NAME_VAR, and TREE_TYPE.

Referenced by copy_ssa_name(), duplicate_ssa_name_fn(), and replace_ssa_name().

◆ duplicate_ssa_name()

tree duplicate_ssa_name ( tree var,
gimple * stmt )
inline
Creates a duplicate of a SSA name NAME tobe defined by statement STMT
in function cfun.   

References cfun, and duplicate_ssa_name_fn().

Referenced by create_new_def_for(), gimple_ic(), gimple_stringop_fixed_value(), insert_phi_nodes_for(), separate_decls_in_region_name(), and split_loop_exit_edge().

◆ duplicate_ssa_name_fn()

tree duplicate_ssa_name_fn ( struct function * fn,
tree name,
gimple * stmt )
extern
Creates a duplicate of a ssa name NAME tobe defined by statement STMT
in function FN.   

References copy_ssa_name_fn(), duplicate_ssa_name_ptr_info(), duplicate_ssa_name_range_info(), ggc_alloc(), POINTER_TYPE_P, range_info_p(), SSA_NAME_PTR_INFO, and TREE_TYPE.

Referenced by duplicate_ssa_name().

◆ duplicate_ssa_name_ptr_info()

void duplicate_ssa_name_ptr_info ( tree name,
struct ptr_info_def * ptr_info )
extern

◆ duplicate_ssa_name_range_info()

◆ fini_ssanames()

void fini_ssanames ( struct function * fn)
extern
Finalize management of SSA_NAMEs.   

References FOR_EACH_VEC_SAFE_ELT, FREE_SSANAMES, FREE_SSANAMES_QUEUE, i, NULL, SSA_NAME_DEF_STMT, SSANAMES, and vec_free().

Referenced by delete_tree_ssa().

◆ flush_ssaname_freelist()

void flush_ssaname_freelist ( void )
extern
Move all SSA_NAMEs from FREE_SSA_NAMES_QUEUE to FREE_SSA_NAMES.

We do not, but should have a mode to verify the state of the SSA_NAMEs
lists.  In particular at this point every name must be in the IL,
on the free list or in the queue.  Anything else is an error.   

References cfun, FREE_SSANAMES, FREE_SSANAMES_QUEUE, scev_reset_htab(), vec_safe_is_empty(), vec_safe_splice(), and vec_safe_truncate().

Referenced by execute_todo().

◆ get_nonzero_bits()

◆ get_ptr_info()

◆ get_ptr_info_alignment()

bool get_ptr_info_alignment ( struct ptr_info_def * pi,
unsigned int * alignp,
unsigned int * misalignp )
extern
If the alignment of the pointer described by PI is known, return true and
store the alignment and the deviation from it into *ALIGNP and *MISALIGNP
respectively.  Otherwise return false.   

References ggc_alloc().

Referenced by dump_ssaname_info(), get_pointer_alignment_1(), and ipcp_update_vr().

◆ init_ssa_name_imm_use()

void init_ssa_name_imm_use ( tree name)
extern

◆ init_ssanames()

void init_ssanames ( struct function * fn,
int size )
extern
Initialize management of SSA_NAMEs to default SIZE.  If SIZE is
zero use default.   

References FREE_SSANAMES, FREE_SSANAMES_QUEUE, function::gimple_df, NULL, NULL_TREE, gimple_df::rename_vops, gimple_df::ssa_renaming_needed, SSANAMES, vec_alloc(), and vec_safe_reserve().

Referenced by init_tree_ssa().

◆ make_ssa_name()

tree make_ssa_name ( tree var,
gimple * stmt = NULL )
inline
Return an SSA_NAME node for variable VAR defined in statement STMT
in function cfun.   

References cfun, and make_ssa_name_fn().

Referenced by asan_expand_check_ifn(), asan_expand_mark_ifn(), attempt_builtin_copysign(), addsub_pattern::build(), build_and_add_sum(), build_and_insert_cast(), tree_switch_conversion::switch_conversion::build_arrays(), build_assign(), build_assign(), build_ref_for_offset(), build_shadow_mem_access(), build_type_cast(), bump_vector_ptr(), clear_padding_flush(), clear_padding_type(), convert_atomic_bit_not(), create_call_for_reduction_1(), create_expression_by_pieces(), create_iv(), create_parallel_loop(), create_tmp_reg_or_ssa_name(), declare_return_variable(), detach_value(), do_vec_conversion(), duplicate_and_interleave(), early_object_sizes_execute_one(), tree_switch_conversion::bit_test_cluster::emit(), execute_load_motion(), execute_update_addresses_taken(), expand_call_inline(), expand_complex_libcall(), expand_complex_multiplication(), expand_omp_atomic_load(), expand_omp_atomic_pipeline(), expand_omp_atomic_store(), expand_omp_for_static_chunk(), expand_parallel_call(), expand_vector_divmod(), factor_out_conditional_operation(), fold_builtin_atomic_compare_exchange(), fold_strstr_to_strncmp(), force_gimple_operand_1(), force_into_ssa_name(), gen_conditions_for_pow_int_base(), gen_emutls_addr(), gen_one_condition(), generate_memset_builtin(), generate_strlen_builtin(), generate_strlen_builtin_1(), generate_strlen_builtin_using_rawmemchr(), get_component_ssa_name(), get_string_length(), gimple_build_vector(), gimple_build_vector_from_val(), gimple_expand_vec_set_extract_expr(), gimple_fold_builtin_acc_on_device(), gimple_fold_builtin_clear_padding(), gimple_lower_bitint(), gimple_regimplify_operands(), gsi_replace_with_seq_vops(), handle_builtin_alloca(), increment_start_addr(), initialize_inlined_parameters(), initialize_root_vars(), initialize_root_vars_lm(), initialize_root_vars_store_elim_2(), rt_bb_visited::insert_exit_check_on_edge(), instrument_bool_enum_load(), instrument_builtin(), instrument_builtin_call(), instrument_func_entry(), instrument_nonnull_arg(), instrument_si_overflow(), internal_get_tmp_var(), ipa_simd_modify_stmt_ops(), ipa_tm_insert_gettmclone_call(), linearize_expr(), lower_assumption(), lower_coro_builtin(), lower_eh_dispatch(), lower_emutls_1(), lower_omp_for(), lower_omp_sections(), lower_resx(), make_new_ssa_for_def(), make_phi_node(), match_arith_overflow(), match_single_bit_test(), match_uaddc_usubc(), maybe_cast_to_ptrmode(), maybe_create_ssa_name(), maybe_optimize_range_tests(), maybe_push_res_to_seq(), maybe_register_def(), ipa_param_adjustments::modify_call(), move_computations_worker(), negate_value(), oacc_entry_exit_single_gang(), oacc_rewrite_var_decl(), object_sizes_set(), object_sizes_set_temp(), omp_sese_split_blocks(), optimize_atomic_bit_test_and(), optimize_atomic_op_fetch_cmp_0(), optimize_mask_stores(), optimize_range_tests_cmp_bitwise(), optimize_range_tests_to_bit_test(), optimize_range_tests_var_bound(), optimize_spaceship(), optimize_vector_constructor(), optimize_vector_load(), permute_vec_elements(), phiprop_insert_phi(), prepare_target_mem_ref_lvalue(), read_vector_array(), reassociate_bb(), pcom_worker::reassociate_to_the_same_stmt(), remap_gimple_stmt(), remap_ssa_name(), replace_abnormal_ssa_names(), ipa_param_body_adjustments::replace_removed_params_ssa_names(), repropagate_negates(), rewrite_expr_tree(), rewrite_stmt(), rewrite_to_defined_overflow(), separate_decls_in_region(), simd_clone_adjust(), simd_clone_linear_addend(), simplify_builtin_call(), simplify_count_trailing_zeroes(), simplify_using_ranges::simplify_float_conversion_using_ranges(), simplify_using_ranges::simplify_internal_call_using_ranges(), simplify_permutation(), simplify_rotate(), simplify_using_ranges::simplify_truth_ops_using_ranges(), simplify_vector_constructor(), sink_common_stores_to_bb(), split_function(), sra_modify_expr(), take_address_of(), tm_log_emit_saves(), transform_add_to_multiply(), tree_function_versioning(), tree_optimize_tail_calls_1(), tree_vec_extract(), ubsan_expand_null_ifn(), ubsan_expand_objsize_ifn(), ubsan_expand_ptr_ifn(), ubsan_expand_vptr_ifn(), undistribute_bitref_for_vector(), loop_cand::undo_simple_reduction(), update_alias_info_with_stack_vars(), update_ops(), vect_add_slp_permutation(), vect_create_constant_vectors(), vect_create_epilog_for_reduction(), vect_create_half_widening_stmts(), vect_create_partial_epilog(), vect_create_vectorized_demotion_stmts(), vect_do_peeling(), vect_emulate_mixed_dot_prod(), vect_expand_fold_left(), vect_gen_while(), vect_gen_widened_results_half(), vect_get_main_loop_result(), vect_init_vector(), vect_maybe_permute_loop_masks(), vect_set_loop_controls_directly(), vect_setup_realignment(), vect_transform_reduction(), vect_transform_slp_perm_load_1(), vectorizable_assignment(), vectorizable_bswap(), vectorizable_call(), vectorizable_comparison_1(), vectorizable_condition(), vectorizable_conversion(), vectorizable_load(), vectorizable_operation(), vectorizable_recurr(), vectorizable_scan_store(), vectorizable_shift(), vectorizable_simd_clone_call(), vectorizable_store(), vectorize_fold_left_reduction(), version_loop_by_alias_check(), version_loop_for_if_conversion(), walk_regimplify_phi(), and worker_single_copy().

◆ make_ssa_name_fn()

tree make_ssa_name_fn ( struct function * fn,
tree var,
gimple * stmt,
unsigned int version )
extern
Return an SSA_NAME node for variable VAR defined in statement STMT
in function FN.  STMT may be an empty statement for artificial
references (e.g., default definitions created when a variable is
used without a preceding definition).  If VERISON is not zero then
allocate the SSA name with that version.   

References FREE_SSANAMES, gcc_assert, ggc_alloc(), init_ssa_name_imm_use(), is_gimple_reg_type(), make_node(), NULL, NULL_TREE, POINTER_TYPE_P, SET_SSA_NAME_VAR_OR_IDENTIFIER, SSA_NAME_DEF_STMT, SSA_NAME_IN_FREE_LIST, SSA_NAME_IS_DEFAULT_DEF, ssa_name_nodes_created, ssa_name_nodes_reused, SSA_NAME_PTR_INFO, SSA_NAME_RANGE_INFO, SSA_NAME_VERSION, SSANAMES, TREE_CODE, TREE_TYPE, TYPE_MAIN_VARIANT, TYPE_P, VAR_P, vec_safe_grow_cleared(), vec_safe_is_empty(), and vec_safe_push().

Referenced by copy_ssa_name_fn(), get_or_create_ssa_default_def(), input_ssa_names(), make_ssa_name(), make_temp_ssa_name(), move_sese_region_to_fn(), and replace_ssa_name().

◆ make_temp_ssa_name()

tree make_temp_ssa_name ( tree type,
gimple * stmt,
const char * name )
inline
Return an anonymous SSA_NAME node for type TYPE defined in statement STMT
in function cfun.  Arrange so that it uses NAME in dumps.   

References cfun, gcc_checking_assert, get_identifier(), make_ssa_name_fn(), SET_SSA_NAME_VAR_OR_IDENTIFIER, ssa_name, and TYPE_P.

Referenced by adjust_return_value_with_ops(), attempt_builtin_powi(), complex_pattern::build(), build_and_insert_binop(), build_and_insert_call(), build_and_insert_ref(), build_vect_cond_expr(), cond_if_else_store_replacement_1(), cond_store_replacement(), connect_loop_phis(), convert_scalar_cond_reduction(), convert_to_divmod(), create_add_on_incoming_edge(), create_expression_by_pieces(), create_iv(), create_phi_basis_1(), create_tailcall_accumulator(), do_pre_regular_insertion(), execute_cse_sincos_1(), gen_assign_counter_update(), gen_counter_update(), gen_phi_nest_statement(), get_representative_for(), gimple_divmod_fixed_value(), gimple_gen_ic_profiler(), gimple_ic(), gimple_mod_pow2(), gimple_mod_subtract(), gimple_stringop_fixed_value(), ifc_temp_var(), insert_initializers(), insert_into_preds_of_block(), introduce_cast_before_cand(), merge_with_identity(), optimize_recip_sqrt(), powi_as_mults(), powi_as_mults_1(), prepare_vec_mask(), reassociate_bb(), rewrite_bittest(), rewrite_reciprocal(), take_address_of(), tree_transform_and_unroll_loop(), vect_create_cond_for_align_checks(), vect_expand_fold_left(), vect_gen_loop_len_mask(), vect_gen_while(), vect_get_loop_len(), vect_get_loop_mask(), vect_get_loop_variant_data_ptr_increment(), vect_get_new_ssa_name(), vect_permute_load_chain(), vect_permute_store_chain(), vect_recog_temp_ssa_var(), vect_set_loop_controls_directly(), vect_shift_permute_load_chain(), vectorizable_comparison_1(), vectorizable_early_exit(), and verify_bb_vtables().

◆ mark_ptr_info_alignment_unknown()

void mark_ptr_info_alignment_unknown ( struct ptr_info_def * pi)
extern

◆ release_defs()

void release_defs ( gimple * stmt)
extern
Release all the SSA_NAMEs created by STMT.   

References FOR_EACH_SSA_TREE_OPERAND, release_ssa_name(), SSA_OP_ALL_DEFS, and TREE_CODE.

Referenced by strlen_pass::adjust_last_stmt(), adjust_simduid_builtins(), cancel_fma_deferring(), cond_if_else_store_replacement_1(), cond_store_replacement(), convert_mult_to_fma_1(), convert_scalar_cond_reduction(), delete_dead_or_redundant_assignment(), delete_dead_or_redundant_call(), eliminate_dom_walker::eliminate_cleanup(), eliminate_tail_call(), execute_cse_conv_1(), execute_early_expand_coro_ifns(), expand_omp_atomic_fetch_op(), expand_omp_atomic_pipeline(), factor_out_conditional_operation(), forward_propagate_addr_expr(), generate_loops_for_partition(), gimple_seq_discard(), gimplify_and_update_call_from_tree(), strlen_pass::handle_builtin_memset(), strlen_pass::handle_store(), ifcvt_local_dce(), input_function(), linearize_expr(), match_single_bit_test(), match_uaddc_usubc(), maybe_remove_writeonly_store(), optimize_atomic_bit_test_and(), optimize_clobbers(), optimize_recip_sqrt(), dom_opt_dom_walker::optimize_stmt(), optimize_vector_load(), predicate_statements(), propagate_op_to_single_use(), reassociate_bb(), release_defs_bitset(), remove_bb(), remove_dead_stmt(), remove_indirect_clobbers(), remove_prop_source_from_use(), pcom_worker::remove_stmt(), vec_info::remove_stmt(), remove_unused_locals(), remove_visited_stmt_chain(), repropagate_negates(), ipa_param_body_adjustments::reset_debug_stmts(), rewrite_bittest(), simple_dce_from_worklist(), simplify_builtin_call(), sink_clobbers(), sink_code_in_bb(), sink_common_stores_to_bb(), sra_modify_assign(), sra_modify_constructor_assign(), sra_modify_deferred_init(), vect_transform_loop(), and vect_transform_slp_perm_load_1().

◆ release_ssa_name()

◆ release_ssa_name_fn()

void release_ssa_name_fn ( struct function * fn,
tree var )
extern
We no longer need the SSA_NAME expression VAR, release it so that
it may be reused.

Note it is assumed that no calls to make_ssa_name will be made
until all uses of the ssa name are released and that the only
use of the SSA_NAME expression is to check its SSA_NAME_VAR.  All
other fields must be assumed clobbered.   

References delink_imm_use(), error_mark_node, FREE_SSANAMES_QUEUE, ggc_alloc(), insert_debug_temp_for_var_def(), ssa_use_operand_t::loc, MAY_HAVE_DEBUG_BIND_STMTS, name_registered_for_update_p(), ssa_use_operand_t::next, NULL, NULL_TREE, ssa_use_operand_t::prev, release_ssa_name_after_update_ssa(), ssa_use_operand_t::ssa_name, SSA_NAME_IMM_USE_NODE, SSA_NAME_IN_FREE_LIST, SSA_NAME_IS_DEFAULT_DEF, SSA_NAME_VERSION, SSANAMES, TREE_SET_CODE, tree_size(), TREE_TYPE, vec_safe_push(), and verify_imm_links().

Referenced by expand_ifn_va_arg_1(), operands_scanner::finalize_ssa_defs(), and release_ssa_name().

◆ replace_ssa_name_symbol()

void replace_ssa_name_symbol ( tree ssa_name,
tree sym )
extern
Replace the symbol associated with SSA_NAME with SYM.   

References SET_SSA_NAME_VAR_OR_IDENTIFIER, ssa_name, and TREE_TYPE.

Referenced by base_names_in_chain_on(), separate_decls_in_region_name(), and set_component_ssa_name().

◆ reset_flow_sensitive_info()

◆ reset_flow_sensitive_info_in_bb()

void reset_flow_sensitive_info_in_bb ( basic_block bb)
extern
Clear all flow sensitive data from all statements and PHI definitions
in BB.   

References FOR_EACH_SSA_TREE_OPERAND, ggc_alloc(), gimple_phi_result(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_start_phis(), gsi_stmt(), i, reset_flow_sensitive_info(), and SSA_OP_DEF.

Referenced by maybe_optimize_range_tests(), and replace_block_by().

◆ set_bitmask()

void set_bitmask ( tree name,
const wide_int & value,
const wide_int & mask )
extern
Update the known bits of NAME.

Zero bits in MASK cover constant values.  Set bits in MASK cover
unknown values.  VALUE are the known bits.   

References gcc_assert, POINTER_TYPE_P, r, set_range_info(), and TREE_TYPE.

Referenced by ccp_finalize().

◆ set_nonzero_bits()

void set_nonzero_bits ( tree name,
const wide_int & mask )
extern
Update the non-zero bits bitmask of NAME.   

References gcc_assert, POINTER_TYPE_P, r, set_range_info(), and TREE_TYPE.

Referenced by maybe_set_nonzero_bits().

◆ set_ptr_info_alignment()

void set_ptr_info_alignment ( struct ptr_info_def * pi,
unsigned int align,
unsigned int misalign )
extern
Store the power-of-two byte alignment and the deviation from that
alignment of pointer described by PI to ALIOGN and MISALIGN
respectively.   

References ptr_info_def::align, gcc_assert, gcc_checking_assert, ggc_alloc(), and ptr_info_def::misalign.

Referenced by ccp_finalize(), create_array_ref(), create_expression_by_pieces(), ipcp_update_vr(), lower_builtin_assume_aligned(), maybe_set_nonzero_bits(), flow_sensitive_info_storage::restore(), vectorizable_load(), and vectorizable_store().

◆ set_ptr_nonnull()

void set_ptr_nonnull ( tree name)
extern
Set nonnull attribute to pointer NAME.   

References gcc_assert, get_ptr_info(), ggc_alloc(), POINTER_TYPE_P, and TREE_TYPE.

Referenced by find_what_p_points_to(), and set_range_info().

◆ set_range_info()

◆ ssa_name_has_boolean_range()

bool ssa_name_has_boolean_range ( tree op)
extern
Return TRUE is OP, an SSA_NAME has a range of values [0..1], false
otherwise.

This can be because it is a boolean type, any unsigned integral
type with a single bit of precision, or has known range of [0..1]
via range analysis.   

References cfun, wi::eq_p(), gcc_assert, get_nonzero_bits(), get_range_query(), INTEGRAL_TYPE_P, r, range_true_and_false(), TREE_CODE, TREE_TYPE, TYPE_PRECISION, and TYPE_UNSIGNED.

Referenced by associate_equivalences_with_edges(), edge_info::derive_equivalences(), dom_opt_dom_walker::optimize_stmt(), and record_edge_info().

◆ ssanames_print_statistics()

void ssanames_print_statistics ( void )
extern
Dump some simple statistics regarding the re-use of SSA_NAME nodes.   

References ggc_alloc(), PRsa, SIZE_AMOUNT, ssa_name_nodes_created, and ssa_name_nodes_reused.

Referenced by dump_tree_statistics().