GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | ptr_info_def |
class | flow_sensitive_info_storage |
Macros | |
#define | SSANAMES(fun) |
#define | DEFAULT_DEFS(fun) |
#define | num_ssa_names (vec_safe_length (cfun->gimple_df->ssa_names)) |
#define | ssa_name(i) |
#define | FOR_EACH_SSA_NAME(I, VAR, FN) |
#define DEFAULT_DEFS | ( | fun | ) |
Referenced by set_ssa_default_def(), and ssa_default_def().
#define FOR_EACH_SSA_NAME | ( | I, | |
VAR, | |||
FN ) |
Referenced by build_ssa_conflict_graph(), ccp_finalize(), compute_avail(), compute_points_to_sets(), dump_alias_info(), dump_function_to_file(), dump_immediate_uses(), fini_copy_prop(), ipa_icf::sem_item_optimizer::fixup_points_to_sets(), insert_phi_nodes(), ipa_simd_modify_function_body(), mark_ssa_maybe_undefs(), ipa_icf::sem_item_optimizer::merge_classes(), neuter_worker_single(), new_temp_expr_table(), populate_coalesce_list_for_outofssa(), run_rpo_vn(), update_alias_info_with_stack_vars(), update_ssa(), and verify_ssa().
#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(), 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().
#define ssa_name | ( | i | ) |
Referenced by add_exit_phis(), add_field_for_name(), path_range_query::adjust_for_non_null_uses(), assume_query::assume_query(), 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(), back_threader::dump(), block_range_cache::dump(), block_range_cache::dump(), equiv_chain::dump(), equiv_oracle::dump(), path_range_query::dump(), phi_group::dump(), pointer_query::dump(), range_def_chain::dump(), ssa_cache::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(), equiv_relation_iterator::get_name(), gori_export_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(), ssa_lazy_cache::merge(), 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(), assume_query::update_parms(), update_ssa(), relation_oracle::valid_equivs(), verify_def(), verify_ssa_name(), verify_ssaname_freelists(), verify_use(), and ssa_name_limit_t::visit_phi().
#define SSANAMES | ( | fun | ) |
Referenced by analyze_function_body(), fini_ssanames(), ipa_icf_gimple::func_checker::func_checker(), ipa_icf::sem_function::init(), init_ssanames(), input_phi(), input_ssa_names(), lto_input_tree_ref(), make_ssa_name_fn(), output_ssa_names(), release_ssa_name_fn(), and stream_read_tree_ref().
|
extern |
If pointer described by PI has known alignment, increase its known misalignment by INCREMENT modulo its current alignment.
References ptr_info_def::align, and ptr_info_def::misalign.
Return an SSA_NAME node using the template SSA name NAME defined in statement STMT in function cfun.
References cfun, and copy_ssa_name_fn().
Referenced by tree_switch_conversion::switch_conversion::build_one_array(), bump_vector_ptr(), connect_loop_phis(), create_parallel_loop(), create_phi_for_local_result(), edge_before_returns_twice_call(), expand_omp_for_generic(), expand_omp_for_static_chunk(), tree_switch_conversion::switch_conversion::gen_def_assigns(), generate_rawmemchr_builtin(), gimple_lower_bitint(), gimple_make_forwarder_block(), initialize_root_vars_store_elim_2(), insert_backedge_copies(), make_forwarders_with_degenerate_phis(), oacc_entry_exit_single_gang(), shrink_wrap_one_built_in_call_with_conds(), slpeel_tree_duplicate_loop_to_edge_cfg(), slpeel_update_phi_nodes_for_guard1(), split_function(), transform_to_exit_first_loop(), transform_to_exit_first_loop_alt(), tree_transform_and_unroll_loop(), loop_cand::undo_simple_reduction(), update_accumulator_with_ops(), vect_create_epilog_for_reduction(), vect_finish_stmt_generation(), vect_loop_versioning(), vect_set_loop_condition_normal(), vect_setup_realignment(), vectorizable_condition(), vectorizable_live_operation_1(), vectorizable_load(), vectorizable_simd_clone_call(), vectorizable_store(), and worker_single_simple().
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().
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(), hoist_defs_of_uses(), insert_phi_nodes_for(), maybe_duplicate_comparison(), separate_decls_in_region_name(), and split_loop_exit_edge().
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(), POINTER_TYPE_P, range_info_p(), SSA_NAME_PTR_INFO, and TREE_TYPE.
Referenced by duplicate_ssa_name().
|
extern |
Creates a duplicate of the ptr_info_def at PTR_INFO for use by the SSA name NAME.
References gcc_assert, ggc_alloc(), POINTER_TYPE_P, SSA_NAME_PTR_INFO, and TREE_TYPE.
Referenced by bump_vector_ptr(), copy_ref_info(), duplicate_ssa_name_fn(), issue_prefetch_ref(), maybe_duplicate_ssa_info_at_copy(), rewrite_use_nonlinear_expr(), and vect_duplicate_ssa_name_ptr_info().
References gcc_checking_assert, POINTER_TYPE_P, range_info_get_range(), range_info_p(), range_info_set_range(), and TREE_TYPE.
Referenced by duplicate_ssa_name_fn(), maybe_duplicate_ssa_info_at_copy(), remap_ssa_name(), and replace_phi_edge_with_variable().
|
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().
|
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().
|
extern |
Return a widest_int with potentially non-zero bits in SSA_NAME NAME, the constant for INTEGER_CST, or -1 if unknown.
References ptr_info_def::align, element_precision(), vrange::get_nonzero_bits(), ptr_info_def::misalign, POINTER_TYPE_P, POLY_INT_CST_P, range_info_get_range(), range_info_p(), wi::shwi(), SSA_NAME_PTR_INFO, irange::supports_p(), wi::to_poly_wide(), wi::to_wide(), TREE_CODE, and TREE_TYPE.
Referenced by evaluate_stmt(), expr_not_equal_to(), get_default_value(), range_query::get_tree_range(), ipcp_bits_lattice::get_value_and_mask(), handle_builtin_alloca(), maybe_set_nonzero_bits(), optimize_range_tests_var_bound(), split_constant_offset(), ssa_name_has_boolean_range(), tree_ctz(), tree_nonzero_bits(), validate_test_and_branch(), and vect_get_range_info().
|
extern |
Return the alias information associated with pointer T. It creates a new instance if none existed.
References gcc_assert, ggc_cleared_alloc(), mark_ptr_info_alignment_unknown(), NULL, POINTER_TYPE_P, ptr_info_def::pt, pt_solution_reset(), SSA_NAME_PTR_INFO, and TREE_TYPE.
Referenced by ccp_finalize(), copy_ref_info(), create_array_ref(), create_expression_by_pieces(), find_what_p_points_to(), ipcp_update_vr(), lower_builtin_assume_aligned(), maybe_set_nonzero_bits(), remap_ssa_name(), set_ptr_nonnull(), set_range_info(), update_alias_info_with_stack_vars(), vectorizable_load(), and vectorizable_store().
|
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 ptr_info_def::align, and ptr_info_def::misalign.
Referenced by dump_ssaname_info(), get_pointer_alignment_1(), and ipcp_update_vr().
|
extern |
Initialize SSA_NAME_IMM_USE_NODE of a SSA NAME.
References ssa_use_operand_t::loc, ssa_use_operand_t::next, NULL, ssa_use_operand_t::prev, ssa_use_operand_t::ssa_name, SSA_NAME_IMM_USE_NODE, and ssa_use_operand_t::use.
Referenced by make_ssa_name_fn(), and maybe_fold_comparisons_from_match_pd().
|
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().
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_conversion(), 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_cond_expr(), 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(), spaceship_replacement(), 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().
|
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, 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().
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_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().
|
extern |
State that the pointer described by PI has unknown alignment.
References ptr_info_def::align, and ptr_info_def::misalign.
Referenced by bump_vector_ptr(), get_ptr_info(), issue_prefetch_ref(), reset_flow_sensitive_info(), flow_sensitive_info_storage::restore(), rewrite_use_nonlinear_expr(), and vect_duplicate_ssa_name_ptr_info().
For a SSA copy DEST = SRC duplicate SSA info present on DEST to SRC to preserve it in case DEST is eliminated to SRC.
References duplicate_ssa_name_ptr_info(), duplicate_ssa_name_range_info(), gimple_bb(), INTEGRAL_TYPE_P, POINTER_TYPE_P, SSA_NAME_DEF_STMT, SSA_NAME_PTR_INFO, SSA_NAME_RANGE_INFO, and TREE_TYPE.
Referenced by substitute_and_fold_dom_walker::before_dom_children(), eliminate_dom_walker::eliminate_stmt(), fini_copy_prop(), and fwprop_set_lattice_val().
|
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(), hoist_memory_references(), 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_mask_stores(), 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().
|
inline |
Release the SSA name NAME used in function cfun.
References cfun, and release_ssa_name_fn().
Referenced by delete_update_ssa(), eliminate_unnecessary_stmts(), expand_call_inline(), expand_omp_for_generic(), expand_omp_for_static_chunk(), expand_omp_for_static_nochunk(), expand_omp_sections(), factor_out_conditional_operation(), free_rpo_vn(), vec_info::free_stmt_vec_info(), gimple_fold_builtin_memory_op(), gimple_ic(), gimple_lower_bitint(), gimple_stringop_fixed_value(), gimplify_size_expressions(), gsi_replace_with_seq_vops(), insert_phi_nodes(), ipa_release_ssas_in_hash(), lower_assumption(), match_arith_overflow(), ipa_param_body_adjustments::modify_cfun_body(), tree_loop_interchange::move_code_to_inner_loop(), move_sese_region_to_fn(), optimize_atomic_bit_test_and(), optimize_atomic_op_fetch_cmp_0(), optimize_recip_sqrt(), release_defs(), remove_phi_node(), remove_unused_locals(), replace_call_with_value(), simplify_builtin_call(), and loop_cand::undo_simple_reduction().
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, 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 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().
|
extern |
Reset all flow sensitive data on NAME such as range-info, nonzero bits and alignment.
References mark_ptr_info_alignment_unknown(), NULL, POINTER_TYPE_P, SSA_NAME_PTR_INFO, SSA_NAME_RANGE_INFO, and TREE_TYPE.
Referenced by combine_blocks(), cond_removal_in_builtin_zero_pattern(), copy_ref_info(), ifcombine_replace_cond(), minmax_replacement(), move_computations_worker(), move_stmt(), reset_flow_sensitive_info_in_bb(), flow_sensitive_info_storage::save_and_clear(), and value_replacement().
|
extern |
Clear all flow sensitive data from all statements and PHI definitions in BB.
References FOR_EACH_SSA_TREE_OPERAND, 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 ifcombine_replace_cond(), maybe_optimize_range_tests(), and replace_block_by().
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().
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().
|
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, 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().
|
extern |
Set nonnull attribute to pointer NAME.
References gcc_assert, get_ptr_info(), pt_solution::null, POINTER_TYPE_P, ptr_info_def::pt, and TREE_TYPE.
Referenced by find_what_p_points_to(), and set_range_info().
Sets the value range to SSA.
Update the range information for NAME, intersecting into an existing range if applicable. Return TRUE if the range was updated.
References value_range::dump(), dump_file, fputc(), get_ptr_info(), gimple_range_global(), value_range::intersect(), pt_solution::null, POINTER_TYPE_P, print_generic_expr(), ptr_info_def::pt, r, range_info_get_range(), range_info_p(), range_info_set_range(), set_ptr_nonnull(), value_range::set_varying(), TDF_SLIM, TREE_TYPE, and value_range::undefined_p().
Referenced by assume_query::assume_query(), gimple_ranger::export_global_ranges(), strlen_pass::handle_builtin_string_cmp(), remove_unreachable::handle_early(), strlen_pass::handle_integral_assign(), insert_into_preds_of_block(), ipcp_update_vr(), optimize_spaceship(), dom_ranger::range_of_stmt(), gimple_ranger::register_inferred_ranges(), remove_unreachable::remove(), remove_unreachable::remove_and_update_globals(), set_bitmask(), dom_opt_dom_walker::set_global_ranges_from_unreachable_edges(), set_nonzero_bits(), set_strlen_range(), simplify_using_ranges::simplify_truth_ops_using_ranges(), value_replacement(), vect_do_peeling(), and vect_gen_vector_loop_niters().
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().
|
extern |
Dump some simple statistics regarding the re-use of SSA_NAME nodes.
References PRsa, SIZE_AMOUNT, ssa_name_nodes_created, and ssa_name_nodes_reused.
Referenced by dump_tree_statistics().