GCC Middle and Back End API Reference
|
#include <ipa-ref.h>
Public Member Functions | |
void | remove_reference () |
bool | cannot_lead_to_return () |
bool | address_matters_p () |
struct ipa_ref_list * | referring_ref_list (void) |
struct ipa_ref_list * | referred_ref_list (void) |
Data Fields | |
symtab_node * | referring |
symtab_node * | referred |
gimple * | stmt |
unsigned int | lto_stmt_uid |
unsigned int | referred_index |
unsigned int | speculative_id: 16 |
enum ipa_ref_use | use:3 |
unsigned int | speculative:1 |
Record of reference in callgraph or varpool.
|
inline |
Return true if reference may be used in address compare.
References DECL_VIRTUAL_P, IPA_REF_ADDR, is_a(), referred, referring, and use.
Referenced by address_matters_1(), comdat_can_be_unshared_p_1(), ipa_icf::sem_function::equals_wpa(), ipa_icf::sem_variable::equals_wpa(), ipa_icf::symbol_compare_collection::symbol_compare_collection(), and ipa_icf::sem_item::update_hash_by_addr_refs().
bool ipa_ref::cannot_lead_to_return | ( | ) |
Return true when execution of reference can lead to return from function.
References dyn_cast(), and referring.
Referenced by analyze_function(), and propagate_pure_const().
struct ipa_ref_list * ipa_ref::referred_ref_list | ( | void | ) |
struct ipa_ref_list * ipa_ref::referring_ref_list | ( | void | ) |
void ipa_ref::remove_reference | ( | ) |
Interprocedural reference lists. Copyright (C) 2010-2025 Free Software Foundation, Inc. Contributed by Jan Hubicka This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
Remove reference.
References gcc_assert, IPA_REF_ALIAS, last, ipa_ref_list::last_alias(), ipa_ref_list::references, referred_index, referred_ref_list(), ipa_ref_list::referring, referring_ref_list(), and use.
Referenced by adjust_references_in_caller(), create_dispatcher_calls(), ipcp_discover_new_direct_edges(), propagate_controlled_uses(), cgraph_edge::rebuild_references(), remove_described_reference(), and cgraph_edge::resolve_speculation().
unsigned int ipa_ref::lto_stmt_uid |
Referenced by symtab_node::clone_reference(), symtab_node::clone_references(), symtab_node::clone_referring(), symtab_node::create_reference(), fixup_call_stmt_edges_1(), input_ref(), lto_output_ref(), cgraph_edge::make_speculative(), cgraph_edge::speculative_call_target_ref(), cgraph_node::verify_node(), and verify_speculative_call().
symtab_node* ipa_ref::referred |
Referenced by address_matters_p(), analyze_function(), analyze_functions(), ipa_icf::sem_item_optimizer::build_graph(), symtab_node::clone_reference(), symtab_node::clone_references(), compare_virtual_tables(), symtab_node::create_reference(), create_references(), create_variable_info_for(), symtab_node::dump_references(), enqueue_references(), ipa_icf::sem_function::equals_wpa(), ipa_icf::sem_variable::equals_wpa(), function_and_variable_visibility(), generate_summary(), symtab_node::get_alias_target(), ipa_single_use(), lto_output_ref(), cgraph_edge::make_direct(), process_references(), propagate_pure_const(), cgraph_edge::redirect_call_stmt_to_callee(), referred_ref_list(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), cgraph_edge::resolve_speculation(), ipa_icf::symbol_compare_collection::symbol_compare_collection(), ipa_icf::sem_item::update_hash_by_addr_refs(), and verify_speculative_call().
unsigned int ipa_ref::referred_index |
Referenced by symtab_node::create_reference(), and remove_reference().
symtab_node* ipa_ref::referring |
Referenced by cgraph_node::add_detected_attribute(), add_detected_attribute_1(), address_matters_p(), varpool_node::assemble_aliases(), cgraph_node::assemble_thunks_and_aliases(), cgraph_node::call_for_symbol_and_aliases_1(), symtab_node::call_for_symbol_and_aliases_1(), varpool_node::call_for_symbol_and_aliases_1(), cgraph_node::call_for_symbol_thunks_and_aliases(), cgraph_node::can_remove_if_no_direct_calls_p(), can_remove_node_now_p_1(), cannot_lead_to_return(), cgraph_externally_visible_p(), symbol_table::change_decl_assembler_name(), check_callers(), symtab_node::clone_referring(), compare_virtual_tables(), symtab_node::copy_visibility_from(), create_dispatcher_calls(), symtab_node::create_reference(), cgraph_node::dump(), symtab_node::dump_referring(), varpool_node::externally_visible_p(), growth_positive_p(), have_optimized_refs(), ipa_single_use(), ipa_tm_execute(), lto_output_ref(), symtab_node::make_decl_local(), symtab_node::output_to_lto_symbol_table_p(), process_references(), propagate_comdat_group(), propagate_single_user(), ipa_icf::redirect_all_callers(), referenced_from_other_partition_p(), referenced_from_this_partition_p(), referenced_from_vtable_p(), referring_ref_list(), symbol_table::remove_unreachable_nodes(), reset_edge_caches(), symtab_node::resolve_alias(), ipa_icf::set_alias_uids(), cgraph_node::set_const_flag(), set_const_flag_1(), cgraph_node::set_malloc_flag(), set_malloc_flag_1(), cgraph_node::set_noreturn_flag(), set_noreturn_flag_1(), cgraph_node::set_nothrow_flag(), set_nothrow_flag_1(), update_caller_keys(), ipa_icf::sem_item::update_hash_by_local_refs(), and symtab_node::verify_base().
unsigned int ipa_ref::speculative |
Referenced by symtab_node::clone_reference(), symtab_node::clone_references(), symtab_node::clone_referring(), symtab_node::create_reference(), symtab_node::dump_references(), symtab_node::dump_referring(), input_ref(), lto_output_ref(), cgraph_edge::make_speculative(), cgraph_edge::rebuild_references(), cgraph_edge::redirect_call_stmt_to_callee(), cgraph_edge::set_call_stmt(), cgraph_edge::speculative_call_target_ref(), cgraph_node::verify_node(), and verify_speculative_call().
unsigned int ipa_ref::speculative_id |
gimple* ipa_ref::stmt |
Referenced by symtab_node::clone_references(), symtab_node::clone_referring(), create_dispatcher_calls(), symtab_node::create_reference(), fixup_call_stmt_edges_1(), ipa_duplicate_jump_function(), lto_output_ref(), cgraph_edge::redirect_call_stmt_to_callee(), cgraph_edge::set_call_stmt(), cgraph_edge::speculative_call_target_ref(), cgraph_node::verify_node(), and verify_speculative_call().
enum ipa_ref_use ipa_ref::use |
Referenced by address_matters_p(), analyze_function(), symtab_node::clone_reference(), symtab_node::clone_references(), symtab_node::clone_referring(), create_dispatcher_calls(), symtab_node::create_reference(), symtab_node::dump_references(), symtab_node::dump_referring(), ipa_icf::sem_function::equals_wpa(), ipa_icf::sem_variable::equals_wpa(), function_and_variable_visibility(), symtab_node::get_alias_target(), has_addr_references_p(), symtab_node::iterate_direct_aliases(), lto_output_ref(), symtab_node::output_to_lto_symbol_table_p(), process_references(), propagate_comdat_group(), propagate_pure_const(), referenced_from_vtable_p(), remove_reference(), ipa_icf::sem_item::update_hash_by_addr_refs(), and cgraph_node::verify_node().