GCC Middle and Back End API Reference
|
#include <cgraph.h>
Static Public Member Functions | |
static symtab_node * | get (const_tree decl) |
static symtab_node * | get_create (tree node) |
static symtab_node * | get_for_asmname (const_tree asmname) |
static void | check_ifunc_callee_symtab_nodes (void) |
static DEBUG_FUNCTION void | verify_symtab_nodes (void) |
static void | checking_verify_symtab_nodes (void) |
Protected Member Functions | |
void | dump_base (FILE *) |
bool DEBUG_FUNCTION | verify_base (void) |
void | unregister (struct clone_info *) |
struct symbol_priority_map * | priority_info (void) |
bool | call_for_symbol_and_aliases_1 (bool(*callback)(symtab_node *, void *), void *data, bool include_overwrite) |
Private Member Functions | |
symtab_node * | ultimate_alias_target_1 (enum availability *avail=NULL, symtab_node *ref=NULL) |
const char * | get_dump_name (bool asm_name_p) const |
Static Private Member Functions | |
static bool | set_section_from_string (symtab_node *n, void *s) |
static bool | set_section_from_node (symtab_node *n, void *o) |
static bool | set_implicit_section (symtab_node *n, void *) |
static bool | noninterposable_alias (symtab_node *node, void *data) |
Private Attributes | |
int | m_uid |
Friends | |
class | symbol_table |
Base of all entries in the symbol table. The symtab_node is inherited by cgraph and varpol nodes.
|
inlineexplicit |
References address_taken, alias, alias_target, analyzed, aux, body_removed, cpp_implicit_alias, definition, externally_visible, false, force_output, forced_by_abi, ifunc_resolver, implicit_section, in_init_priority_hash, in_other_partition, lto_file_data, m_uid, need_lto_streaming, next_sharing_asm_name, no_reorder, NULL, NULL_TREE, offloadable, order, previous_sharing_asm_name, ref_list, refuse_visibility_changes, resolution, same_comdat_group, semantic_interposition, symver, transparent_alias, type, unique_name, used_from_other_partition, weakref, writeonly, x_comdat_group, and x_section.
Referenced by add_to_same_comdat_group(), address_can_be_compared_p(), binds_to_current_def_p(), call_for_symbol_and_aliases(), call_for_symbol_and_aliases_1(), can_increase_alignment_p(), cgraph_node::cgraph_node(), check_ifunc_callee_symtab_nodes(), clone_references(), clone_referring(), copy_visibility_from(), create_reference(), create_reference(), dissolve_same_comdat_group_list(), equal_address_to(), find_reference(), fixup_same_cpp_alias_visibility(), cgraph_node::function_or_virtual_thunk_symbol(), cgraph_node::function_symbol(), get(), cgraph_node::get_availability(), get_availability(), varpool_node::get_availability(), cgraph_node::get_for_asmname(), get_for_asmname(), varpool_node::get_for_asmname(), in_same_comdat_group_p(), make_decl_local(), maybe_create_reference(), next_defined_symbol(), noninterposable_alias(), noninterposable_alias(), nonzero_address(), remove_from_same_comdat_group(), resolve_alias(), semantically_equivalent_p(), set_implicit_section(), set_section(), set_section_for_node(), set_section_from_node(), set_section_from_string(), cgraph_node::ultimate_alias_target(), ultimate_alias_target(), varpool_node::ultimate_alias_target(), ultimate_alias_target_1(), unregister(), varpool_node::varpool_node(), verify_base(), and verify_symtab_nodes().
void symtab_node::add_to_same_comdat_group | ( | symtab_node * | old_node | ) |
Add NEW_ to the same comdat group that OLD is in.
References cgraph_node::callers, comdat_local_p(), dyn_cast(), gcc_assert, get_comdat_group(), cgraph_edge::next_caller, NULL, same_comdat_group, set_comdat_group(), and symtab_node().
Referenced by create_dispatcher_calls(), fixup_same_cpp_alias_visibility(), resolve_alias(), set_comdat_group(), and split_function().
bool symtab_node::address_can_be_compared_p | ( | void | ) |
Return true if NODE's address can be compared.
References address_can_be_compared_p(), decl, DECL_CXX_CONSTRUCTOR_P, DECL_CXX_DESTRUCTOR_P, DECL_IN_CONSTANT_POOL, DECL_MERGEABLE, DECL_VIRTUAL_P, is_a(), symtab_node(), TREE_READONLY, and TREE_THIS_VOLATILE.
Referenced by address_can_be_compared_p(), address_matters_1(), and comdat_can_be_unshared_p_1().
bool symtab_node::address_matters_p | ( | ) |
Return true if symbol's address may possibly be compared to other symbol's address.
References address_matters_1(), alias, call_for_symbol_and_aliases(), gcc_assert, and NULL.
Referenced by ipa_icf::sem_function::merge(), and ipa_icf::sem_variable::merge().
const char * symtab_node::asm_name | ( | ) | const |
Return printable assembler name of NODE. This function is used only for debugging. When assembler name is unknown go with identifier name.
References decl, DECL_ASSEMBLER_NAME, DECL_ASSEMBLER_NAME_SET_P, IDENTIFIER_POINTER, and name().
Referenced by dump_callgraph_transformation(), get_dump_name(), name(), and cgraph_node::remove().
bool symtab_node::binds_to_current_def_p | ( | symtab_node * | ref = NULL | ) |
Return true when references to this symbol from REF must bind to current definition in final executable.
References AVAIL_INTERPOSABLE, binds_to_current_def_p(), decl, decl_binds_to_current_def_p(), DECL_EXTERNAL, definition, dyn_cast(), externally_visible, gcc_assert, get_alias_target(), get_availability(), get_comdat_group(), has_aliases_p(), ifunc_resolver, in_other_partition, cgraph_node::inlined_to, IPA_SSA_AFTER_INLINING, symtab, symtab_node(), and transparent_alias.
Referenced by binds_to_current_def_p(), compute_strub_mode(), determine_global_memory_access(), get_modref_function_summary(), gimple_call_arg_flags(), gimple_call_retslot_flags(), gimple_call_static_chain_flags(), ignore_edge_for_nothrow(), propagate_nothrow(), ref_maybe_used_by_call_p_1(), set_const_flag_1(), set_nothrow_flag_1(), stmt_kills_ref_p(), and worse_state().
|
inline |
Call callback on symtab node and aliases associated to this node. When INCLUDE_OVERWRITABLE is false, overwritable symbols are skipped.
References AVAIL_INTERPOSABLE, call_for_symbol_and_aliases_1(), get_availability(), has_aliases_p(), and symtab_node().
Referenced by address_matters_p(), definition_alignment(), increase_alignment(), ipa_comdats(), noninterposable_alias(), resolve_alias(), resolve_unique_section(), set_section(), and set_section().
|
protected |
Worker for call_for_symbol_and_aliases.
References alias, AVAIL_INTERPOSABLE, FOR_EACH_ALIAS, ipa_ref::referring, and symtab_node().
Referenced by call_for_symbol_and_aliases().
|
inline |
References decl, DECL_COMMON, DECL_EXTERNAL, DECL_SECTION_NAME, DECL_WEAK, get_comdat_group(), in_other_partition, and resolution.
Referenced by can_replace_by_local_alias(), ipa_devirt(), ipa_make_edge_direct_to_target(), ipa_profile(), ipa_icf::sem_function::merge(), ipa_icf::sem_variable::merge(), nonzero_address(), optimize_weakref(), and try_speculative_devirtualization().
bool symtab_node::can_increase_alignment_p | ( | void | ) |
Return true if symbol's alignment may be increased.
References decl, decl_binds_to_current_def_p(), DECL_IN_CONSTANT_POOL, DECL_PRESERVE_P, DECL_RTL, DECL_RTL_SET_P, DECL_SECTION_NAME, get_partitioning_class(), implicit_section, in_other_partition, MEM_P, NULL, SYMBOL_DUPLICATE, SYMBOL_REF_HAS_BLOCK_INFO_P, symtab_node(), TREE_ASM_WRITTEN, ultimate_alias_target(), VAR_P, and XEXP.
Referenced by increase_alignment(), and increase_alignment_1().
|
static |
Check symbol table for callees of IFUNC resolvers.
References BITMAP_ALLOC, bitmap_bit_p, BITMAP_FREE, bitmap_obstack_initialize(), bitmap_obstack_release(), bitmap_set_bit, cgraph_node::call_for_symbol_and_aliases(), cgraph_node::called_by_ifunc_resolver, check_ifunc_resolver(), dyn_cast(), FOR_EACH_SYMBOL, get_uid(), ifunc_ref_map, is_caller_ifunc_resolver(), NULL, and symtab_node().
Referenced by symbol_table::compile().
|
inlinestatic |
References verify_symtab_nodes().
Referenced by symbol_table::compile(), and symbol_table::remove_unreachable_nodes().
void symtab_node::clear_stmts_in_references | ( | void | ) |
Remove all stmt references in non-speculative references in THIS and all clones. Those are not maintained during inlining & cloning. The exception are speculative references that are updated along with callgraph edges associated with them.
References clear_stmts_in_references(), cgraph_node::clones, dyn_cast(), i, iterate_reference(), cgraph_node::next_sibling_clone, NULL, and r.
Referenced by clear_stmts_in_references(), inline_transform(), and cgraph_node::materialize_clone().
Clone reference REF to this symtab_node and set its stmt to STMT.
References create_reference(), ipa_ref::lto_stmt_uid, ipa_ref::referred, ipa_ref::speculative, ipa_ref::speculative_id, and ipa_ref::use.
Referenced by ipa_duplicate_jump_function().
void symtab_node::clone_references | ( | symtab_node * | node | ) |
Clone all references from symtab NODE to this symtab_node.
References create_reference(), i, iterate_reference(), ipa_ref::lto_stmt_uid, NULL, ipa_ref::referred, ipa_ref::speculative, ipa_ref::speculative_id, ipa_ref::stmt, symtab_node(), and ipa_ref::use.
Referenced by cgraph_node::create_clone().
void symtab_node::clone_referring | ( | symtab_node * | node | ) |
Clone all referring from symtab NODE to this symtab_node.
References create_reference(), i, iterate_referring(), ipa_ref::lto_stmt_uid, NULL, ipa_ref::referring, ipa_ref::speculative, ipa_ref::speculative_id, ipa_ref::stmt, symtab_node(), and ipa_ref::use.
|
inline |
References decl, same_comdat_group, and TREE_PUBLIC.
Referenced by add_to_same_comdat_group(), analyze_functions(), determine_versionability(), inline_call(), localize_node(), mark_functions_to_output(), ipa_icf::sem_function::merge(), cgraph_edge::redirect_callee(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), verify_base(), and cgraph_node::verify_node().
void symtab_node::copy_visibility_from | ( | symtab_node * | n | ) |
Copy visibility from N. This is useful when THIS becomes a transparent alias of N.
References alias, decl, DECL_COMDAT, DECL_COMMON, DECL_DLLIMPORT_P, DECL_EXTERNAL, DECL_RTL, DECL_RTL_SET_P, DECL_VISIBILITY, DECL_VISIBILITY_SPECIFIED, DECL_WEAK, externally_visible, gcc_assert, gcc_checking_assert, GET_CODE, get_comdat_group(), i, iterate_direct_aliases(), make_decl_rtl(), MEM_P, ipa_ref::referring, resolution, set_comdat_group(), set_section(), SYMBOL_REF_WEAK, symtab_node(), TREE_ADDRESSABLE, TREE_CODE, TREE_PUBLIC, TREE_STATIC, VAR_P, weakref, and XEXP.
Referenced by optimize_weakref().
ipa_ref * symtab_node::create_reference | ( | symtab_node * | referred_node, |
enum ipa_ref_use | use_type ) |
Return ipa reference from this symtab_node to REFERRED_NODE or REFERRED_VARPOOL_NODE. USE_TYPE specify type of the use.
References create_reference(), NULL, and symtab_node().
Referenced by adjust_references_in_caller(), clone_reference(), clone_references(), clone_referring(), create_dispatcher_calls(), create_reference(), gen_emutls_addr(), input_ref(), cgraph_edge::make_speculative(), maybe_create_reference(), process_symver_attribute(), propagate_controlled_uses(), record_eh_tables(), record_reference(), record_type_list(), and resolve_alias().
ipa_ref * symtab_node::create_reference | ( | symtab_node * | referred_node, |
enum ipa_ref_use | use_type, | ||
gimple * | stmt ) |
Return ipa reference from this symtab_node to REFERRED_NODE or REFERRED_VARPOOL_NODE. USE_TYPE specify type of the use and STMT the statement (if it exists).
References gcc_checking_assert, i, IPA_REF_ALIAS, is_a(), iterate_reference(), ipa_ref::lto_stmt_uid, NULL, ref_list, ipa_ref_list::references, ipa_ref::referred, ipa_ref::referred_index, ipa_ref::referring, ipa_ref_list::referring, ipa_ref::speculative, ipa_ref::speculative_id, ipa_ref::stmt, symtab_node(), and ipa_ref::use.
DEBUG_FUNCTION void symtab_node::debug | ( | void | ) |
Dump symtab node NODE to stderr.
References dump().
Referenced by verify(), and verify_symtab_nodes().
unsigned int symtab_node::definition_alignment | ( | ) |
Return desired alignment of the definition. This is NOT alignment useful to access THIS, because THIS may be interposable and DECL_ALIGN should be used instead. It however must be guaranteed when output definition of THIS.
References alias, call_for_symbol_and_aliases(), gcc_assert, and get_alignment_1().
Referenced by assemble_start_function(), build_constant_desc(), emit_local(), function_section_1(), and output_constant_def_contents().
void symtab_node::dissolve_same_comdat_group_list | ( | void | ) |
Dissolve the same_comdat_group list in which NODE resides.
References decl, dyn_cast(), next, NULL, same_comdat_group, set_comdat_group(), symtab_node(), and TREE_PUBLIC.
Referenced by function_and_variable_visibility(), localize_node(), and update_visibility_by_resolution_info().
void symtab_node::dump | ( | FILE * | f | ) |
Dump symtab node to F.
References dyn_cast().
Referenced by debug(), symbol_table::dump(), ipa_comdats(), and verify_base().
const char * symtab_node::dump_asm_name | ( | ) | const |
References get_dump_name().
Referenced by analyze_functions(), cgraph_node::dump(), dump_base(), dump_references(), dump_referring(), expand_all_functions(), ipa_reference_read_optimization_summary(), ipa_icf::sem_item_optimizer::merge_classes(), propagate(), symbol_table::remove_unreferenced_decls(), and ipa_icf::set_alias_uids().
|
protected |
Dump base fields of symtab nodes to F. Not to be used directly.
References address_taken, alias, alias_target, analyzed, aux, body_removed, cpp_implicit_alias, decl, DECL_ARTIFICIAL, DECL_ASSEMBLER_NAME, DECL_COMDAT, DECL_COMMON, DECL_DLLIMPORT_P, DECL_EXTERNAL, DECL_ONE_ONLY, DECL_P, DECL_STATIC_CONSTRUCTOR, DECL_STATIC_DESTRUCTOR, DECL_VIRTUAL_P, DECL_VISIBILITY, DECL_VISIBILITY_SPECIFIED, DECL_WEAK, definition, dump_addr(), dump_asm_name(), dump_flags, dump_references(), dump_referring(), externally_visible, force_output, forced_by_abi, get_comdat_group(), get_comdat_group_id(), get_section(), IDENTIFIER_POINTER, ifunc_resolver, implicit_section, in_other_partition, ld_plugin_symbol_resolution_names, lto_file_data, name(), next_sharing_asm_name, no_reorder, previous_sharing_asm_name, resolution, same_comdat_group, semantic_interposition, symtab_type_names, symver, TDF_ADDRESS, transparent_alias, TREE_ASM_WRITTEN, TREE_CODE, TREE_PUBLIC, type, used_from_other_partition, and weakref.
Referenced by cgraph_node::dump(), and varpool_node::dump().
void symtab_node::dump_graphviz | ( | FILE * | f | ) |
References dyn_cast().
Referenced by symbol_table::dump_graphviz().
const char * symtab_node::dump_name | ( | ) | const |
References get_dump_name().
Referenced by adjust_references_in_caller(), analyze_function(), analyze_function_body(), analyze_functions(), call_may_clobber_ref_p_1(), copy_bb(), create_specialized_node(), decide_about_value(), decide_whether_version_node(), determine_versionability(), drop_profile(), cgraph_node::dump(), speculative_call_summary::dump(), cgraph_node::dump_graphviz(), dump_ipa_call_summary(), dump_malloc_lattice(), dump_modref_edge_summaries(), dump_profile_updates(), ipa_icf::sem_function::equals(), ipa_icf::sem_variable::equals(), estimate_local_effects(), function_and_variable_visibility(), generate_summary(), cgraph_node::get_create(), identify_dead_nodes(), init_node_map(), initialize_node_lattices(), inline_analyze_function(), inline_call(), inline_small_functions(), inline_to_all_callers_1(), ipa_devirt(), ipa_discover_variable_flags(), ipa_dump_fn_summary(), ipa_impossible_devirt_target(), ipa_inline(), ipa_make_edge_direct_to_target(), ipa_make_function_const(), ipa_make_function_pure(), ipa_merge_modref_summary_after_inlining(), ipa_merge_profiles(), ipa_print_node_jump_functions(), ipa_print_node_params(), ipa_profile(), ipa_profile_dump_all_summaries(), ipa_propagate_frequency(), ipa_pta_execute(), ipa_single_use(), ipcp_cloning_candidate_p(), ipcp_store_vr_results(), ipcp_transform_function(), make_item_for_dump_symtab_node(), cgraph_edge::make_speculative(), cgraph_node::materialize_clone(), ipa_icf::sem_item_optimizer::merge_classes(), optimize_weakref(), output_constructor(), output_function(), perhaps_add_new_callers(), print_all_lattices(), propagate(), propagate_bits_across_jump_function(), propagate_controlled_uses(), propagate_malloc(), propagate_nothrow(), propagate_pure_const(), pure_const_read_summary(), read_write_all_from_decl(), recursive_inlining(), cgraph_edge::redirect_call_stmt_to_callee(), ref_maybe_used_by_call_p_1(), remove_described_reference(), symbol_table::remove_unreachable_nodes(), cgraph_edge::resolve_speculation(), save_inline_function_body(), stmt_kills_ref_p(), verify_speculative_call(), walk_polymorphic_call_targets(), walk_polymorphic_call_targets(), and worse_state().
void symtab_node::dump_references | ( | FILE * | file | ) |
Dump references in ref list to FILE.
References dump_asm_name(), i, ipa_ref_use_name, iterate_reference(), NULL, ipa_ref::referred, ipa_ref::speculative, and ipa_ref::use.
Referenced by dump_base().
void symtab_node::dump_referring | ( | FILE * | file | ) |
Dump referring in list to FILE.
References dump_asm_name(), i, ipa_ref_use_name, iterate_referring(), NULL, ipa_ref::referring, ipa_ref::speculative, and ipa_ref::use.
Referenced by dump_base().
int symtab_node::equal_address_to | ( | symtab_node * | s2, |
bool | memory_accessed = false ) |
Return 0 if symbol is known to have different address than S2, Return 1 if symbol is known to have same address as S2, return -1 otherwise. If MEMORY_ACCESSED is true, assume that both memory pointer to THIS and S2 is going to be accessed. This eliminates the situations when either THIS or S2 is NULL and is useful for comparing bases when deciding about memory aliasing.
References alias, analyzed, AVAIL_AVAILABLE, decl, DECL_ATTRIBUTES, decl_binds_to_current_def_p(), DECL_VIRTUAL_P, equal_address_to(), folding_initializer, get_alias_target(), lookup_attribute(), nonzero_address(), refuse_visibility_changes, symtab_node(), transparent_alias, TREE_CODE, ultimate_alias_target(), and VAR_P.
Referenced by address_compare(), compare_base_decls(), ipa_icf::sem_item::compare_symbol_references(), and equal_address_to().
ipa_ref * symtab_node::find_reference | ( | symtab_node * | referred_node, |
gimple * | stmt, | ||
unsigned int | lto_stmt_uid, | ||
enum ipa_ref_use | use_type ) |
Find the structure describing a reference to REFERRED_NODE of USE_TYPE and associated with statement STMT or LTO_STMT_UID.
References i, iterate_reference(), NULL, r, and symtab_node().
Referenced by adjust_references_in_caller(), ipa_duplicate_jump_function(), ipcp_discover_new_direct_edges(), propagate_controlled_uses(), and remove_described_reference().
void symtab_node::fixup_same_cpp_alias_visibility | ( | symtab_node * | target | ) |
C++ FE sometimes change linkage flags after producing same body aliases. FIXME: C++ produce implicit aliases for virtual functions and vtables that are obviously equivalent. The way it is doing so is however somewhat kludgy and interferes with the visibility code. As a result we need to copy the visibility from the target to get things right.
References add_to_same_comdat_group(), decl, DECL_COMDAT, DECL_DECLARED_INLINE_P, DECL_DISREGARD_INLINE_LIMITS, DECL_EXTERNAL, DECL_VISIBILITY, DECL_WEAK, externally_visible, get_comdat_group(), is_a(), same_comdat_group, set_comdat_group(), symtab_node(), and TREE_PUBLIC.
Referenced by analyze_functions(), and resolve_alias().
|
inlinestatic |
References decl, DECL_EXTERNAL, gcc_checking_assert, symtab_node(), TREE_CODE, and TREE_STATIC.
Referenced by add_decls_addresses_to_decl_constructor(), adjust_references_in_caller(), asan_protect_global(), assemble_start_function(), build_constant_desc(), can_refer_decl_in_current_unit_p(), symbol_table::change_decl_assembler_name(), compare_base_decls(), create_specialized_node(), decl_binds_to_current_def_p(), decl_comdat_group(), decl_comdat_group_id(), decl_init_priority_insert(), decl_init_priority_lookup(), decl_section_name(), default_binds_local_p_3(), default_function_section(), emit_local(), ensure_base_align(), expand_debug_expr(), function_section_1(), cgraph_node::get(), varpool_node::get(), get_named_text_section(), handle_alias_pairs(), increase_alignment(), ipa_get_range_from_ip_invariant(), ipa_reference_var_get_or_insert_uid(), ipa_reference_var_uid(), is_proper_for_analysis(), mark_weak(), maybe_create_reference(), maybe_nonzero_address(), omp_discover_declare_target_tgt_fn_r(), omp_discover_declare_target_var_r(), omp_finish_file(), optimize_dyn_tls_for_decl_p(), output_constant_def_contents(), output_offload_tables(), place_block_symbol(), propagate_controlled_uses(), cgraph_edge::resolve_speculation(), resolve_unique_section(), set_decl_section_name(), set_decl_section_name(), symtab_node_for_jfunc(), update_vtable_references(), use_blocks_for_decl_p(), vect_can_force_dr_alignment_p(), and verify_base().
|
inline |
Return node that alias is aliasing.
References gcc_checking_assert, IPA_REF_ALIAS, iterate_reference(), NULL, ipa_ref::referred, and ipa_ref::use.
Referenced by analyze_functions(), binds_to_current_def_p(), can_replace_by_local_alias(), symbol_table::change_decl_assembler_name(), symbol_table::compile(), compute_ltrans_boundary(), equal_address_to(), cgraph_node::get_alias_target(), varpool_node::get_alias_target(), get_alias_target_tree(), make_decl_local(), omp_discover_declare_target_tgt_fn_r(), optimize_weakref(), symbol_table::output_weakrefs(), symbol_table::remove_unreachable_nodes(), resolve_alias(), ultimate_alias_target_1(), and verify_base().
|
inline |
Return the DECL (or identifier) that alias is aliasing. Unlike the above, this works whether or not the alias has been analyzed already.
References alias_target, decl, and get_alias_target().
Referenced by process_function_and_variable_attributes().
|
inline |
Return availability of NODE when referenced from REF.
References dyn_cast(), is_a(), and symtab_node().
Referenced by binds_to_current_def_p(), call_for_symbol_and_aliases(), can_replace_by_local_alias(), ipa_icf::sem_item::compare_referenced_symbol_properties(), cgraph_edge::possibly_call_in_translation_unit_p(), ipa_icf::symbol_compare_collection::symbol_compare_collection(), ultimate_alias_target(), and ultimate_alias_target_1().
|
inline |
References x_comdat_group.
Referenced by add_to_same_comdat_group(), binds_to_current_def_p(), can_be_discarded_p(), cgraph_node::can_remove_if_no_direct_calls_p(), copy_visibility_from(), create_dispatcher_calls(), decl_comdat_group(), dump_base(), fixup_same_cpp_alias_visibility(), cgraph_node::get_availability(), varpool_node::get_availability(), in_same_comdat_group_p(), ipa_comdats(), lto_output_node(), lto_output_varpool_node(), ipa_icf::sem_function::merge(), resolve_alias(), set_comdat_group(), verify_base(), verify_symtab_nodes(), and cgraph_node::will_be_removed_from_program_if_no_direct_calls_p().
|
inline |
References DECL_ASSEMBLER_NAME, TREE_CODE, and x_comdat_group.
Referenced by analyze_functions(), decl_comdat_group_id(), and dump_base().
|
inlinestatic |
Return symtab_node for NODE or create one if it is not present in symtab.
References cgraph_node::get_create(), varpool_node::get_create(), and VAR_P.
Referenced by address_compare(), compare_base_symbol_refs(), maybe_nonzero_address(), and process_symver_attribute().
|
private |
References asm_name(), EXTRA, ggc_internal_cleared_alloc(), m_uid, and name().
Referenced by dump_asm_name(), and dump_name().
|
static |
Return the cgraph node that has ASMNAME for its DECL_ASSEMBLER_NAME. Return NULL if there's no such node.
References NULL, symtab, and symtab_node().
Referenced by find_decl(), cgraph_node::get_for_asmname(), varpool_node::get_for_asmname(), handle_alias_pairs(), noninterposable_alias(), cgraph_edge::possibly_call_in_translation_unit_p(), process_symver_attribute(), and verify_base().
priority_type symtab_node::get_init_priority | ( | ) |
Return the initialization priority.
References DEFAULT_INIT_PRIORITY, in_init_priority_hash, symbol_priority_map::init, and symtab.
Referenced by decl_init_priority_lookup(), cgraph_node::dump(), lto_output_node(), and set_init_priority().
enum symbol_partitioning_class symtab_node::get_partitioning_class | ( | void | ) |
Classify symbol symtab node for partitioning.
References alias, decl, DECL_ABSTRACT_P, DECL_EXTERNAL, DECL_HARD_REGISTER, DECL_IN_CONSTANT_POOL, DECL_ONE_ONLY, definition, dyn_cast(), force_output, forced_by_abi, gcc_checking_assert, cgraph_node::inlined_to, SYMBOL_DUPLICATE, SYMBOL_EXTERNAL, SYMBOL_PARTITION, transparent_alias, ultimate_alias_target(), and used_from_object_file_p().
Referenced by can_increase_alignment_p(), lto_output_node(), and lto_output_varpool_node().
|
inline |
References NULL, and x_section.
Referenced by btf_add_vars(), btf_datasec_add_var(), decl_section_name(), dump_base(), varpool_node::finalize_named_section_flags(), get_section_name(), ipa_comdats(), ipa_discover_variable_flags(), lto_output_node(), lto_output_varpool_node(), resolve_alias(), set_section_for_node(), set_section_for_node(), and verify_base().
const char * symtab_node::get_symtab_type_string | ( | ) | const |
Dump the type_name of the symbol.
References symtab_type_names, and type.
|
inline |
References m_uid.
Referenced by check_ifunc_callee_symtab_nodes(), dump_function_header(), function_version_hasher::equal(), function_summary< T * >::exists(), function_summary< T * >::get_create(), input_node(), ipa_reduced_postorder(), ipa_strub_set_mode_for_new_functions(), is_pass_explicitly_enabled_or_disabled(), function_summary< T * >::remove(), searchc(), fast_function_summary< T *, V >::symtab_insertion(), function_summary< T * >::symtab_insertion(), fast_function_summary< T *, V >::symtab_removal(), and function_summary< T * >::symtab_removal().
const char * symtab_node::get_visibility_string | ( | ) | const |
Dump the visibility of the symbol.
References decl, and DECL_VISIBILITY.
|
inline |
Return true if list contains an alias.
References iterate_direct_aliases(), and NULL.
Referenced by binds_to_current_def_p(), cgraph_node::call_for_symbol_and_aliases(), call_for_symbol_and_aliases(), varpool_node::call_for_symbol_and_aliases(), execute_split_functions(), function_and_variable_visibility(), cgraph_node::get_availability(), varpool_node::get_availability(), ipa_icf::sem_function::merge(), ipa_icf::redirect_all_callers(), and skip_function_for_local_pure_const().
|
inline |
References dyn_cast(), get_comdat_group(), and symtab_node().
Referenced by function_and_variable_visibility(), ipa_icf::sem_function::merge(), verify_base(), and cgraph_node::verify_node().
void symtab_node::increase_alignment | ( | unsigned int | align | ) |
Increase alignment of THIS to ALIGN.
References call_for_symbol_and_aliases(), can_increase_alignment_p(), decl, DECL_ALIGN, gcc_assert, increase_alignment_1(), MAX_OFILE_ALIGNMENT, and ultimate_alias_target().
Referenced by ensure_base_align(), and increase_alignment().
Iterates I-th referring alias item in the list, REF is also set.
References i, IPA_REF_ALIAS, NULL, ref_list, and ipa_ref::use.
Referenced by symbol_table::change_decl_assembler_name(), copy_visibility_from(), has_aliases_p(), ipa_single_use(), make_decl_local(), ipa_icf::redirect_all_callers(), symbol_table::remove_unreachable_nodes(), and resolve_alias().
Iterates I-th reference in the list, REF is also set.
Referenced by analyze_function(), analyze_functions(), ipa_icf::sem_item_optimizer::build_graph(), clear_stmts_in_references(), clone_references(), compare_virtual_tables(), create_reference(), create_references(), create_variable_info_for(), dump_references(), enqueue_references(), ipa_icf::sem_function::equals_wpa(), ipa_icf::sem_variable::equals_wpa(), find_reference(), fixup_call_stmt_edges_1(), function_and_variable_visibility(), generate_summary(), get_alias_target(), ipa_single_use(), output_refs(), process_references(), propagate_pure_const(), cgraph_edge::rebuild_references(), remove_stmt_references(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), cgraph_edge::set_call_stmt(), ipa_icf::symbol_compare_collection::symbol_compare_collection(), cgraph_node::verify_node(), and verify_speculative_call().
Iterates I-th referring item in the list, REF is also set.
Referenced by address_matters_1(), cgraph_node::can_remove_if_no_direct_calls_p(), clone_referring(), comdat_can_be_unshared_p_1(), create_dispatcher_calls(), dump_referring(), has_addr_references_p(), have_optimized_refs(), ipa_reverse_postorder(), output_to_lto_symbol_table_p(), process_references(), propagate_comdat_group(), propagate_single_user(), referenced_from_other_partition_p(), referenced_from_this_partition_p(), referenced_from_vtable_p(), referred_to_p(), and verify_base().
void symtab_node::make_decl_local | ( | void | ) |
Make DECL local. FIXME: We shouldn't need to mess with rtl this early, but other code such as notice_global_symbol generates rtl.
References alias, decl, DECL_ASSEMBLER_NAME, DECL_ATTRIBUTES, DECL_COMDAT, DECL_COMMON, DECL_DLLIMPORT_P, DECL_EXTERNAL, DECL_RTL, DECL_RTL_SET_P, DECL_VISIBILITY, DECL_VISIBILITY_SPECIFIED, DECL_WEAK, gcc_assert, get_alias_target(), GET_CODE, i, IDENTIFIER_TRANSPARENT_ALIAS, iterate_direct_aliases(), make_decl_rtl(), MEM_P, NULL_TREE, ipa_ref::referring, remove_attribute(), SYMBOL_REF_WEAK, symtab, symtab_node(), TREE_ADDRESSABLE, TREE_CHAIN, TREE_CODE, TREE_PUBLIC, TREE_STATIC, VAR_P, VISIBILITY_DEFAULT, weakref, and XEXP.
Referenced by create_dispatcher_calls(), cgraph_node::create_version_clone_with_body(), localize_node(), cgraph_node::make_local(), and optimize_weakref().
References create_reference(), gcc_assert, gcc_checking_assert, get(), get_base_var(), handled_component_p(), IPA_REF_ADDR, IPA_REF_LOAD, NULL, STRIP_NOPS, symtab_node(), TREE_CODE, and VAR_OR_FUNCTION_DECL_P.
Referenced by create_specialized_node(), and cgraph_node::create_virtual_clone().
const char * symtab_node::name | ( | ) | const |
Return printable identifier name.
References asm_name(), decl, DECL_ASSEMBLER_NAME_SET_P, DECL_NAME, and lang_hooks::decl_printable_name.
Referenced by asm_name(), assemble_external_libcall(), assemble_function_label_raw(), assemble_label(), assemble_name(), assemble_name_raw(), assemble_name_resolve(), assemble_noswitch_variable(), assemble_static_space(), assemble_trampoline_template(), assemble_undefined_decl(), assemble_variable(), assemble_variable_contents(), cgraph_node::create_virtual_clone(), decode_reg_name_and_count(), default_assemble_visibility(), default_function_rodata_section(), do_assemble_alias(), dump_base(), emit_common(), emit_local(), emit_tls_common(), expand_call_inline(), varpool_node::get_constructor(), get_dump_name(), cgraph_node::get_untransformed_body(), globalize_decl(), ipa_sra_summarize_function(), make_decl_rtl(), mergeable_constant_section(), mergeable_string_section(), noninterposable_alias(), process_pending_assemble_externals(), set_user_assembler_name(), strip_reg_name(), verify_base(), cgraph_node::verify_node(), verify_node_partition(), and weak_finish_1().
bool symtab_node::native_rtl_p | ( | ) | const |
Return true if this symbol is a function from the C frontend specified directly in RTL form (with "__RTL").
References decl, DECL_STRUCT_FUNCTION, PROP_rtl, and TREE_CODE.
Referenced by cgraph_node::analyze(), cgraph_node::expand(), cgraph_node::finalize_function(), and needed_p().
bool symtab_node::needed_p | ( | void | ) |
Determine if symbol declaration is needed. That is, visible to something either outside this translation unit, something magic in the system configury
References decl, DECL_ASSEMBLER_NAME, DECL_ASSEMBLER_NAME_SET_P, DECL_COMDAT, DECL_EXTERNAL, DECL_STATIC_CONSTRUCTOR, DECL_STATIC_DESTRUCTOR, definition, force_output, forced_by_abi, gcc_checking_assert, native_rtl_p(), TREE_CODE, TREE_PUBLIC, and TREE_SYMBOL_REFERENCED.
Referenced by analyze_functions(), varpool_node::finalize_decl(), and cgraph_node::finalize_function().
|
inline |
Return next reachable static symbol with initializer after the node.
References definition, next, NULL, and symtab_node().
|
staticprivate |
Worker searching noninterposable alias.
References decl, DECL_ATTRIBUTES, decl_binds_to_current_def_p(), DECL_CONTEXT, flags_from_decl_or_type(), symtab_node(), transparent_alias, TREE_CODE, TREE_TYPE, and ultimate_alias_target().
symtab_node * symtab_node::noninterposable_alias | ( | void | ) |
If node cannot be overwriten by static or dynamic linker to point to different definition, return NODE. Otherwise look for alias with such property and if none exists, introduce new one.
References alias, call_for_symbol_and_aliases(), clone_function_name(), copy_node(), cgraph_node::create_alias(), varpool_node::create_alias(), decl, DECL_ATTRIBUTES, decl_binds_to_current_def_p(), DECL_COMDAT, DECL_DLLIMPORT_P, DECL_EXTERNAL, DECL_INITIAL, DECL_NAME, DECL_STATIC_CONSTRUCTOR, DECL_STATIC_DESTRUCTOR, DECL_STRUCT_FUNCTION, DECL_VIRTUAL_P, DECL_WEAK, dyn_cast(), error_mark_node, gcc_assert, get_for_asmname(), lookup_attribute(), cgraph_node::merged_comdat, cgraph_node::merged_extern_inline, name(), noninterposable_alias(), NULL, resolve_alias(), SET_DECL_ASSEMBLER_NAME, SET_DECL_RTL, symtab_node(), TARGET_SUPPORTS_ALIASES, targetm, TREE_CODE, TREE_PUBLIC, TREE_READONLY, ultimate_alias_target(), cgraph_node::unit_id, and weakref.
Referenced by function_and_variable_visibility(), ipa_devirt(), ipa_make_edge_direct_to_target(), ipa_profile(), ipa_icf::sem_function::merge(), noninterposable_alias(), and update_vtable_references().
bool symtab_node::nonzero_address | ( | ) |
Return true when symbol is known to be non-zero.
References nonzero_address().
Referenced by nonzero_address().
Return true when symbol is known to be non-zero, assume that flag_delete_null_pointer_checks is equal to delete_null_pointer_checks.
References alias, analyzed, can_be_discarded_p(), decl, DECL_COMDAT, DECL_EXTERNAL, DECL_WEAK, definition, refuse_visibility_changes, resolution, symtab_node(), ultimate_alias_target(), and weakref.
Referenced by equal_address_to(), get_constraint_for_ssa_var(), ipa_get_range_from_ip_invariant(), and ptrs_compare_unequal().
|
inline |
References ref_list.
Referenced by ipa_icf::sem_function::equals_wpa(), ipa_icf::sem_variable::equals_wpa(), and set_writeonly_bit().
bool symtab_node::output_to_lto_symbol_table_p | ( | void | ) |
Return true if symbol should be output to the symbol table.
References builtin_with_linkage_p(), cgraph_node::callers, decl, DECL_EXTERNAL, DECL_HARD_REGISTER, definition, dyn_cast(), fndecl_built_in_p(), i, IPA_REF_ALIAS, is_a(), iterate_referring(), real_symbol_p(), ipa_ref::referring, TREE_CODE, TREE_PUBLIC, ipa_ref::use, and VAR_P.
Referenced by produce_symtab(), and produce_symtab_extension().
|
inline |
During LTO stream-in this predicate can be used to check whether node in question prevails in the linking to save some memory usage.
References decl, DECL_EXTERNAL, definition, NULL, previous_sharing_asm_name, and TREE_PUBLIC.
Referenced by inline_read_section(), and ipa_read_node_info().
|
protected |
Return the initialization and finalization priority information for DECL. If there is no previous priority information, a freshly allocated structure is returned.
References hash_map< KeyId, Value, Traits >::create_ggc(), DEFAULT_INIT_PRIORITY, symbol_priority_map::fini, in_init_priority_hash, symbol_priority_map::init, and symtab.
Referenced by cgraph_node::set_fini_priority(), and set_init_priority().
|
inline |
Return true when the symbol is real symbol, i.e. it is not inline clone or abstract function kept for debug info purposes only.
References decl, DECL_ABSTRACT_P, definition, dyn_cast(), cgraph_node::inlined_to, is_a(), and transparent_alias.
Referenced by build_type_inheritance_graph(), ipa_comdats(), maybe_record_node(), output_to_lto_symbol_table_p(), set_comdat_group(), and update_type_inheritance_graph().
Return true when there are references to the node. INCLUDE_SELF is true if a self reference counts as a reference.
References cgraph_node::callers, dyn_cast(), iterate_referring(), cgraph_edge::next_caller, and NULL.
Referenced by analyze_functions(), check_global_declaration(), varpool_node::finalize_decl(), and cgraph_node::finalize_function().
void symtab_node::register_symbol | ( | void | ) |
Add node into symbol table. This function is not used directly, but via cgraph/varpool node creation routines.
References decl, ref_list, and symtab.
Referenced by cgraph_node::create(), cgraph_node::create_clone(), varpool_node::get_create(), input_node(), and input_varpool_node().
void symtab_node::remove | ( | void | ) |
Remove symbol from symbol table.
References dyn_cast().
Referenced by analyze_functions(), and symbol_table::remove_unreachable_nodes().
void symtab_node::remove_all_references | ( | void | ) |
Remove all references in ref list.
References ref_list.
Referenced by early_inliner(), function_and_variable_visibility(), inline_transform(), ipa_icf::sem_variable::merge(), cgraph_edge::rebuild_edges(), cgraph_node::release_body(), symbol_table::remove_unreachable_nodes(), reset(), resolve_alias(), set_writeonly_bit(), split_function(), and unregister().
void symtab_node::remove_all_referring | ( | void | ) |
void symtab_node::remove_from_same_comdat_group | ( | void | ) |
Remove NODE from same comdat group.
References NULL, same_comdat_group, set_comdat_group(), and symtab_node().
Referenced by clone_inlined_nodes(), symbol_table::remove_unreachable_nodes(), reset(), resolve_alias(), and unregister().
void symtab_node::remove_stmt_references | ( | gimple * | stmt | ) |
Remove all references that are associated with statement STMT.
References i, iterate_reference(), NULL, and r.
Referenced by delete_unreachable_blocks_update_callgraph(), and ipa_param_adjustments::modify_call().
As an GCC extension we allow redefinition of the function. The semantics when both copies of bodies differ is not well defined. We replace the old body with new body so in unit at a time mode we always use new body, while in normal mode we may end up with old body inlined into some functions and new body expanded and inlined in others. ??? It may make more sense to use one body for inlining and other body for expanding the function but this is difficult to do. This is also used to cancel C++ mangling aliases, which can be for functions or variables.
References alias, analyzed, cpp_implicit_alias, definition, dyn_cast(), gcc_assert, NULL, remove_all_references(), remove_from_same_comdat_group(), transparent_alias, and weakref.
Referenced by analyze_functions(), cgraph_node::create_thunk(), cgraph_node::create_wrapper(), cgraph_node::finalize_function(), handle_alias_pairs(), and ipa_icf::sem_function::merge().
bool symtab_node::resolve_alias | ( | symtab_node * | target, |
bool | transparent = false ) |
Add reference recording that symtab node is alias of TARGET. The function can fail in the case of aliasing cycles; in this case it returns false.
References add_to_same_comdat_group(), address_taken, alias, alias_target, analyzed, call_for_symbol_and_aliases(), CONSTRUCTION, cpp_implicit_alias, create_reference(), decl, definition, error(), fixup_same_cpp_alias_visibility(), gcc_assert, gcc_unreachable, get_alias_target(), get_comdat_group(), get_section(), i, implicit_section, IPA_REF_ALIAS, is_a(), iterate_direct_aliases(), NULL, ref_list, ipa_ref::referring, remove_all_references(), remove_from_same_comdat_group(), same_comdat_group, set_comdat_group(), set_implicit_section(), set_section(), symtab, symtab_node(), symver, transparent_alias, and ultimate_alias_target().
Referenced by cgraph_node::analyze(), varpool_node::analyze(), create_dispatcher_calls(), varpool_node::create_extra_name_alias(), cgraph_node::create_same_body_alias(), ipa_icf::sem_function::merge(), ipa_icf::sem_variable::merge(), new_emutls_decl(), noninterposable_alias(), and symbol_table::process_same_body_aliases().
bool symtab_node::semantically_equivalent_p | ( | symtab_node * | target | ) |
Return true if symtab node and TARGET represents semantically equivalent symbols.
References AVAIL_AVAILABLE, decl, symtab_node(), and ultimate_alias_target().
Referenced by ipa_icf::sem_item::compare_symbol_references(), cgraph_edge::make_direct(), possible_polymorphic_call_target_p(), recursive_call_p(), and cgraph_edge::resolve_speculation().
|
inline |
References DECL_P, gcc_checking_assert, TREE_CODE, and x_comdat_group.
Referenced by add_to_same_comdat_group(), copy_visibility_from(), create_dispatcher_calls(), dissolve_same_comdat_group_list(), fixup_same_cpp_alias_visibility(), input_node(), input_varpool_node(), ipa_tm_create_version(), ipa_tm_create_version_alias(), localize_node(), make_decl_one_only(), cgraph_node::make_local(), remove_from_same_comdat_group(), resolve_alias(), set_comdat_group(), and update_visibility_by_resolution_info().
|
staticprivate |
Worker for symtab_resolve_alias.
References implicit_section, and symtab_node().
Referenced by resolve_alias().
void symtab_node::set_init_priority | ( | priority_type | priority | ) |
Set initialization priority to PRIORITY.
References decl, DECL_STATIC_CONSTRUCTOR, DEFAULT_INIT_PRIORITY, gcc_assert, get_init_priority(), symbol_priority_map::init, is_a(), and priority_info().
Referenced by decl_init_priority_insert(), and input_node().
void symtab_node::set_section | ( | const char * | section | ) |
Set section of symbol and its aliases.
References alias, analyzed, call_for_symbol_and_aliases(), gcc_assert, and set_section_from_string().
Referenced by copy_visibility_from(), create_dispatcher_calls(), cgraph_node::create_version_clone_with_body(), cgraph_node::create_virtual_clone(), ipa_tm_create_version(), localize_node(), cgraph_node::make_local(), resolve_alias(), set_decl_section_name(), and set_decl_section_name().
void symtab_node::set_section | ( | const symtab_node & | other | ) |
References call_for_symbol_and_aliases(), set_section_from_node(), and symtab_node().
void symtab_node::set_section_for_node | ( | const char * | section | ) |
Set section, do not recurse into aliases. When one wants to change section of a symbol and its aliases, use set_section.
References hash_table< Descriptor, Lazy, Allocator >::create_ggc(), get_section(), ggc_cleared_alloc(), ggc_vec_alloc(), implicit_section, NULL, release_section_hash_entry(), retain_section_hash_entry(), symtab, and x_section.
Referenced by input_node(), input_varpool_node(), set_section_from_node(), set_section_from_string(), and unregister().
void symtab_node::set_section_for_node | ( | const symtab_node & | other | ) |
Set the section of node THIS to be the same as the section of node OTHER. Keep reference counts of the sections up-to-date as needed.
References gcc_checking_assert, get_section(), implicit_section, NULL, release_section_hash_entry(), retain_section_hash_entry(), symtab_node(), and x_section.
|
staticprivate |
Set the section of node N to be the same as the section of node O.
References set_section_for_node(), and symtab_node().
Referenced by set_section().
|
staticprivate |
Workers for set_section.
References set_section_for_node(), and symtab_node().
Referenced by set_section().
|
inline |
Walk the alias chain to return the symbol NODE is alias of. If NODE is not an alias, return NODE. When AVAILABILITY is non-NULL, get minimal availability in the chain. When REF is non-NULL, assume that reference happens in symbol REF when determining the availability.
References alias, get_availability(), symtab_node(), and ultimate_alias_target_1().
Referenced by ipa_icf::sem_item_optimizer::build_graph(), can_increase_alignment_p(), compare_base_symbol_refs(), ipa_icf::sem_item::compare_symbol_references(), compare_virtual_tables(), enqueue_references(), equal_address_to(), get_partitioning_class(), increase_alignment(), ipa_comdats(), noninterposable_alias(), noninterposable_alias(), nonzero_address(), omp_discover_declare_target_tgt_fn_r(), place_block_symbol(), process_references(), resolve_alias(), semantically_equivalent_p(), cgraph_node::ultimate_alias_target(), varpool_node::ultimate_alias_target(), and ipa_icf::sem_item::update_hash_by_addr_refs().
|
private |
Walk the alias chain to return the symbol NODE is alias of. If NODE is not an alias, return NODE. Assumes NODE is known to be alias.
References alias, analyzed, AVAIL_NOT_AVAILABLE, get_alias_target(), get_availability(), NULL, symtab_node(), and transparent_alias.
Referenced by ultimate_alias_target().
|
protected |
Remove node from symbol table. This function is not used directly, but via cgraph/varpool node removal routines. INFO is a clone info to attach to new root of clone tree (if any).
References decl, DECL_HARD_REGISTER, dyn_cast(), gcc_assert, in_init_priority_hash, is_a(), NULL, remove_all_references(), remove_all_referring(), remove_from_same_comdat_group(), set_section_for_node(), symtab, and symtab_node().
Referenced by cgraph_node::remove(), and varpool_node::remove().
|
inline |
Return true when symtab_node is known to be used from other (non-LTO) object file. Known only when doing LTO via linker plugin.
References decl, DECL_EXTERNAL, resolution, resolution_used_from_other_file_p(), and TREE_PUBLIC.
Referenced by cgraph_node::can_remove_if_no_direct_calls_and_refs_p(), varpool_node::can_remove_if_no_refs_p(), cgraph_externally_visible_p(), cgraph_node_cannot_be_local_p_1(), varpool_node::externally_visible_p(), get_partitioning_class(), and cgraph_node::only_called_directly_or_aliased_p().
DEBUG_FUNCTION void symtab_node::verify | ( | void | ) |
Verify consistency of NODE.
References debug(), dyn_cast(), internal_error(), seen_error(), timevar_pop(), timevar_push(), and verify_base().
Referenced by early_inliner(), expand_call_inline(), save_inline_function_body(), cgraph_node::verify_cgraph_nodes(), and verify_symtab_nodes().
|
protected |
Verify common part of symtab nodes.
References alias, analyzed, symbol_table::assembler_names_equal_p(), body_removed, comdat_local_p(), cpp_implicit_alias, decl, DECL_ASSEMBLER_NAME, DECL_ATTRIBUTES, DECL_HARD_REGISTER, DECL_VISIBILITY, definition, dump(), dyn_cast(), asmname_hasher::equal(), error(), error_found, get(), get_alias_target(), get_comdat_group(), get_for_asmname(), get_section(), i, IDENTIFIER_POINTER, identifier_to_locale(), ifunc_resolver, implicit_section, in_same_comdat_group_p(), is_a(), iterate_referring(), lookup_attribute(), LTO_STREAMING, name(), NULL, order, previous_sharing_asm_name, ipa_ref::referring, same_comdat_group, symtab, symtab_node(), symver, transparent_alias, TREE_CODE, TREE_PUBLIC, type, ultimate_transparent_alias_target(), VAR_P, VISIBILITY_DEFAULT, and weakref.
Referenced by verify(), and cgraph_node::verify_node().
|
static |
Verify symbol table for internal consistency.
References debug(), decl, DECL_EXTERNAL, error(), FOR_EACH_SYMBOL, get_comdat_group(), hash_map< KeyId, Value, Traits >::get_or_insert(), internal_error(), asm_node::next, NULL, asm_node::order, same_comdat_group, symtab, symtab_node(), and verify().
Referenced by checking_verify_symtab_nodes(), and symbol_table::compile().
|
friend |
References symbol_table.
Referenced by symbol_table.
unsigned symtab_node::address_taken |
Referenced by cgraph_node::can_be_local_p(), cgraph_node::can_remove_if_no_direct_calls_p(), can_remove_node_now_p_1(), clear_addressable_bit(), copy_bb(), dump_base(), execute_omp_device_lower(), execute_split_functions(), input_overwrite_node(), ipa_reverse_postorder(), lto_output_node(), cgraph_node::mark_address_taken(), ipa_icf::sem_function::merge(), cgraph_node::only_called_directly_or_aliased_p(), symbol_table::remove_unreachable_nodes(), resolve_alias(), symtab_node(), cgraph_node::verify_node(), and cgraph_node::will_be_removed_from_program_if_no_direct_calls_p().
unsigned symtab_node::alias |
Referenced by cgraph_node::add_detected_attribute(), address_matters_p(), cgraph_node::analyze(), varpool_node::analyze(), analyze_function(), analyze_functions(), assemble_alias(), varpool_node::assemble_aliases(), varpool_node::assemble_decl(), cgraph_node::assemble_thunks_and_aliases(), associate_varinfo_to_alias(), cgraph_node::call_for_symbol_and_aliases_1(), call_for_symbol_and_aliases_1(), varpool_node::call_for_symbol_and_aliases_1(), cgraph_node::call_for_symbol_thunks_and_aliases(), call_passes_through_thunk(), can_remove_node_now_p(), clone_inlined_nodes(), symbol_table::compile(), compute_ltrans_boundary(), copy_visibility_from(), cgraph_node::create_alias(), varpool_node::create_alias(), create_dispatcher_calls(), create_emultls_var(), varpool_node::create_extra_name_alias(), cgraph_node::create_same_body_alias(), cgraph_node::create_thunk(), ctor_for_folding(), varpool_node::ctor_useable_for_folding_p(), definition_alignment(), determine_versionability(), dump_base(), dump_overall_stats(), equal_address_to(), expand_target_clones(), ipa_icf::sem_item_optimizer::filter_removed_items(), varpool_node::finalize_named_section_flags(), function_and_variable_visibility(), generate_summary(), get_constraint_for_ssa_var(), get_partitioning_class(), handle_alias_pairs(), cgraph_node::has_gimple_body_p(), initialize_node_lattices(), inline_call(), inline_small_functions(), input_node(), input_overwrite_node(), input_varpool_node(), ipa_comdats(), ipa_devirt(), ipa_discover_variable_flags(), ipa_fn_summary_generate(), ipa_fn_summary_write(), ipa_inline(), ipa_lower_emutls(), ipa_merge_profiles(), ipa_profile(), ipa_propagate_frequency(), ipa_pta_execute(), ipa_reverse_postorder(), ipa_strub_set_mode_for_new_functions(), ipa_tm_execute(), ipa_tm_mayenterirr_function(), ipa_write_summaries(), ipcp_propagate_stage(), localize_node(), lto_output(), lto_output_node(), lto_output_varpool_node(), make_decl_local(), mark_functions_to_output(), ipa_icf::sem_variable::merge(), noninterposable_alias(), nonzero_address(), omp_discover_declare_target_tgt_fn_r(), optimize_weakref(), output_in_order(), output_refs(), symbol_table::output_weakrefs(), place_block_symbol(), preserve_function_body_p(), process_function_and_variable_attributes(), process_references(), process_symver_attribute(), propagate(), propagate_malloc(), propagate_nothrow(), propagate_pure_const(), propagate_single_user(), recursive_call_p(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), reset(), resolve_alias(), cgraph_node::set_const_flag(), cgraph_node::set_malloc_flag(), cgraph_node::set_noreturn_flag(), cgraph_node::set_nothrow_flag(), set_section(), set_strub_mode(), set_strub_mode_to(), set_writeonly_bit(), symtab_node(), ultimate_alias_target(), ultimate_alias_target_1(), ultimate_transparent_alias_target(), update_caller_keys(), use_blocks_for_decl_p(), verify_base(), cgraph_node::verify_node(), walk_polymorphic_call_targets(), want_inline_function_to_all_callers_p(), and wrapup_global_declaration_2().
tree symtab_node::alias_target |
Referenced by cgraph_node::analyze(), varpool_node::analyze(), symbol_table::compile(), cgraph_node::create_alias(), varpool_node::create_alias(), create_dispatcher_calls(), dump_base(), get_alias_target_tree(), handle_alias_pairs(), input_node(), input_varpool_node(), maybe_record_node(), omp_discover_declare_target_tgt_fn_r(), symbol_table::output_weakrefs(), symbol_table::process_same_body_aliases(), resolve_alias(), and symtab_node().
unsigned symtab_node::analyzed |
Referenced by cgraph_node::analyze(), varpool_node::analyze(), analyze_functions(), associate_varinfo_to_alias(), compute_ltrans_boundary(), cgraph_node::create_clone(), create_dispatcher_calls(), create_emultls_var(), cgraph_node::create_version_clone(), ctor_for_folding(), do_per_function(), dump_base(), equal_address_to(), expand_thunk(), function_and_variable_visibility(), cgraph_node::get_availability(), get_constraint_for_ssa_var(), get_read_write_all_from_node(), inline_small_functions(), input_node(), input_overwrite_node(), input_varpool_node(), ipa_lower_emutls(), ipa_propagate_frequency(), ipa_pta_execute(), ipa_tm_execute(), ipa_tm_mark_force_output_node(), ipa_tm_mark_forced_by_abi_node(), lto_output_node(), lto_output_varpool_node(), mark_functions_to_output(), cgraph_node::materialize_clone(), ipa_icf::sem_variable::merge(), nonzero_address(), omp_discover_declare_target_tgt_fn_r(), optimize_weakref(), symbol_table::output_weakrefs(), symbol_table::process_new_functions(), symbol_table::process_same_body_aliases(), process_symver_attribute(), cgraph_node::remove(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), reset(), resolve_alias(), set_section(), symtab_node(), ultimate_alias_target_1(), unlikely_executed_stmt_p(), verify_base(), cgraph_node::verify_node(), and wrapup_global_declaration_2().
void* symtab_node::aux |
Referenced by analyze_functions(), dump_base(), enqueue_node(), enqueue_node(), enqueue_node(), enqueue_references(), flatten_function(), identify_dead_nodes(), inline_always_inline_functions(), inline_small_functions(), input_cgraph_1(), input_node(), input_overwrite_node(), input_symtab(), ipa_comdats(), ipa_edge_within_scc(), ipa_free_postorder_info(), ipa_get_nodes_in_cycle(), ipa_inline(), ipa_profile(), ipa_reduced_postorder(), ipa_reverse_postorder(), ipa_single_use(), ipa_tm_execute(), ipcp_decision_stage(), meet(), propagate_nothrow(), propagate_pure_const(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), searchc(), and symtab_node().
unsigned symtab_node::body_removed |
Referenced by varpool_node::ctor_useable_for_folding_p(), cgraph_node::dump(), dump_base(), ipa_icf::sem_item_optimizer::filter_removed_items(), input_overwrite_node(), input_varpool_node(), lto_output_node(), lto_output_varpool_node(), ipa_icf::sem_function::merge(), symbol_table::remove_unreachable_nodes(), symtab_node(), verify_base(), and cgraph_edge::verify_corresponds_to_fndecl().
unsigned symtab_node::cpp_implicit_alias |
Referenced by analyze_functions(), varpool_node::create_extra_name_alias(), cgraph_node::create_same_body_alias(), dump_base(), cgraph_node::finalize_function(), ipa_tm_create_version_alias(), ipa_tm_execute(), symbol_table::process_same_body_aliases(), symbol_table::remove_unreachable_nodes(), reset(), resolve_alias(), symtab_node(), and verify_base().
tree symtab_node::decl |
Referenced by varpool_node::add(), add_detected_attribute_1(), ipcp_lattice< valtype >::add_value(), address_can_be_compared_p(), autofdo::afdo_indirect_call(), cgraph_node::analyze(), varpool_node::analyze(), analyze_function(), analyze_function(), analyze_function_body(), analyze_functions(), asan_finish_file(), asm_name(), varpool_node::assemble_aliases(), varpool_node::assemble_decl(), cgraph_node::assemble_thunks_and_aliases(), associate_varinfo_to_alias(), autofdo::auto_profile(), big_speedup_p(), binds_to_current_def_p(), btf_add_const_void(), btf_add_func_datasec_entries(), btf_add_func_records(), btf_add_vars(), btf_datasec_add_var(), btf_emit_variable_p(), build_type_inheritance_graph(), caller_growth_limits(), calls_builtin_apply_args_p(), can_be_discarded_p(), can_early_inline_edge_p(), can_increase_alignment_p(), can_inline_edge_by_limits_p(), can_inline_edge_p(), cgraph_node::can_remove_if_no_direct_calls_and_refs_p(), cgraph_node::can_remove_if_no_direct_calls_p(), varpool_node::can_remove_if_no_refs_p(), can_remove_node_now_p_1(), can_replace_by_local_alias(), can_replace_by_local_alias_in_vtable(), can_strub_internally_p(), can_strub_p(), cgraph_node::cannot_return_p(), cdtor_p(), cgraph_externally_visible_p(), cgraph_node_cannot_be_local_p_1(), cgraph_update_edges_for_call_stmt_node(), symbol_table::change_decl_assembler_name(), check_argument_count(), check_callers(), check_for_nested_with_variably_modified(), check_global_declaration(), clear_addressable_bit(), ipa_icf::clear_decl_rtl(), clone_inlined_nodes(), clone_of_p(), comdat_can_be_unshared_p_1(), comdat_local_p(), compare_base_symbol_refs(), ipa_icf::sem_function::compare_polymorphic_p(), ipa_icf::sem_item::compare_referenced_symbol_properties(), compare_virtual_tables(), symbol_table::compile(), compute_bb_predicates(), compute_fn_summary(), compute_max_insns(), compute_strub_mode(), copy_function_or_variable(), copy_visibility_from(), coverage_compute_profile_id(), cgraph_node::create(), varpool_node::create_alias(), cgraph_node::create_clone(), create_dispatcher_calls(), symbol_table::create_edge(), create_emultls_var(), varpool_node::create_extra_name_alias(), cgraph_node::create_indirect_edge(), create_nesting_tree(), cgraph_node::create_same_body_alias(), create_specialized_node(), create_target_clone(), create_variable_info_for(), cgraph_node::create_version_clone_with_body(), cgraph_node::create_virtual_clone(), cgraph_node::create_wrapper(), ctor_for_folding(), varpool_node::ctor_useable_for_folding_p(), decompose_param_expr(), cgraph_node::delete_function_version_by_decl(), determine_known_aggregate_parts(), determine_versionability(), devirt_variable_node_removal_hook(), devirtualization_time_bonus(), dissolve_same_comdat_group_list(), distinctify_node_type(), do_estimate_edge_time(), do_estimate_growth_1(), do_per_function(), do_per_function_toporder(), drop_profile(), cgraph_node::dump(), varpool_node::dump(), dump_base(), dump_callgraph_transformation(), dump_final_alias_vcg(), dump_ic_profile(), dump_inline_stats(), funct_state_summary_t::duplicate(), duplicate_thunk_for_node(), early_inline_small_functions(), early_inliner(), edge_badness(), asmname_hasher::equal(), equal_address_to(), ipa_icf::sem_variable::equals(), estimate_edge_devirt_benefit(), estimated_stack_frame_size(), execute_all_ipa_transforms(), execute_split_functions(), cgraph_node::expand(), expand_all_functions(), expand_call_inline(), expand_simd_clones(), expand_target_clones(), expand_thunk(), varpool_node::externally_visible_p(), varpool_node::finalize_decl(), cgraph_node::finalize_function(), varpool_node::finalize_named_section_flags(), find_decl(), find_necessary_statements(), cgraph_node::find_replacement(), symbol_table::first_static_initializer(), fixup_call_stmt_edges(), ipa_icf::sem_item_optimizer::fixup_points_to_sets(), fixup_same_cpp_alias_visibility(), flatten_function(), flatten_remove_node_hook(), fre_will_run_p(), function_and_variable_visibility(), function_called_by_processed_nodes_p(), gen_emutls_addr(), generate_summary(), cgraph_node::get(), get(), varpool_node::get(), get_alias_target_tree(), get_alignment_1(), cgraph_node::get_availability(), varpool_node::get_availability(), cgraph_node::get_body(), get_constraint_for_ssa_var(), varpool_node::get_constructor(), cgraph_node::get_create(), varpool_node::get_create(), cgraph_node::get_fun(), get_max_overall_size(), get_partitioning_class(), get_read_write_all_from_node(), get_section_name(), get_strub_mode(), cgraph_node::get_untransformed_body(), get_variable_section(), get_visibility_string(), gimple_ic(), gimplify_all_functions(), good_cloning_opportunity_p(), handle_alias_pairs(), handle_missing_profiles(), asmname_hasher::hash(), ipa_icf::sem_item::hash_referenced_symbol_properties(), have_optimized_refs(), hint_time_bonus(), ignore_edge_for_nothrow(), ignore_edge_for_pure_const(), ignore_edge_p(), ignore_edge_p(), incorporate_penalties(), increase_alignment(), increase_alignment(), increase_alignment_1(), ipa_icf::sem_variable::init(), init_node_map(), inline_account_function_p(), inline_always_inline_functions(), inline_analyze_function(), inline_call(), inline_insns_auto(), inline_insns_single(), inline_small_functions(), inline_transform(), input_cgraph_1(), input_edge(), input_node(), input_overwrite_node(), input_varpool_node(), funct_state_summary_t::insert(), modref_summaries::insert(), modref_summaries_lto::insert(), symbol_table::insert_to_assembler_name_hash(), ipa_analyze_controlled_uses(), ipa_analyze_node(), ipa_cdtor_merge(), ipa_comdats(), ipa_compute_jump_functions_for_edge(), ipa_devirt(), ipa_discover_variable_flags(), ipa_dump_fn_summary(), ipa_fn_summary_generate(), ipa_get_callee_param_type(), ipa_get_indirect_edge_target_1(), ipa_get_range_from_ip_invariant(), ipa_initialize_node_params(), ipa_inline(), ipa_lower_emutls(), ipa_make_function_const(), ipa_make_function_pure(), ipa_merge_modref_summary_after_inlining(), ipa_merge_profiles(), ipa_populate_param_decls(), ipa_profile(), ipa_profile_generate_summary(), ipa_propagate_frequency(), ipa_pta_execute(), ipa_read_edge_info(), ipa_reference_get_read_global(), ipa_reference_get_written_global(), ipa_reference_write_optimization_summary(), ipa_return_value_range(), ipa_simd_modify_function_body(), ipa_sra_summarize_function(), ipa_tm_create_version(), ipa_tm_create_version_alias(), ipa_tm_diagnose_tm_safe(), ipa_tm_execute(), ipa_tm_mayenterirr_function(), ipa_tm_note_irrevocable(), ipa_tm_scan_calls_clone(), ipa_tm_scan_irr_function(), ipa_tm_transform_calls_redirect(), ipa_tm_transform_clone(), ipa_tm_transform_transaction(), ipa_write_summaries(), ipcp_cloning_candidate_p(), ipcp_propagate_stage(), ipcp_store_vr_results(), ipcp_transform_function(), ipcp_update_vr(), ipcp_verify_propagated_values(), is_improper(), lenient_count_portion_handling(), lhd_finalize_early_debug(), likely_target_p(), cgraph_node::local_info_node(), localize_node(), lower_emutls_function_body(), lto_free_function_in_decl_state_for_node(), lto_output(), lto_output_node(), lto_output_varpool_node(), lto_prepare_function_for_streaming(), lto_read_body_or_constructor(), make_decl_local(), make_item_for_dump_symtab_node(), cgraph_node::make_local(), cgraph_edge::make_speculative(), mark_functions_to_output(), master_clone_with_noninline_clones_p(), cgraph_node::materialize_clone(), maybe_record_nested_function(), ipa_icf::sem_function::merge(), ipa_icf::sem_variable::merge(), merge_aggregate_lattices(), ipa_param_adjustments::modify_call(), name(), native_rtl_p(), needed_p(), new_emutls_decl(), symbol_table::next_static_initializer(), non_local_p(), noninterposable_alias(), noninterposable_alias(), nonzero_address(), num_calls(), offline_size(), ok_for_auto_simd_clone(), omp_discover_declare_target_tgt_fn_r(), omp_discover_declare_target_var_r(), omp_discover_implicit_declare_target(), cgraph_node::only_called_directly_or_aliased_p(), cgraph_node::optimize_for_size_p(), optimize_weakref(), output_constructor(), output_function(), output_in_order(), output_to_lto_symbol_table_p(), symbol_table::output_variables(), symbol_table::output_weakrefs(), perform_estimation_of_a_value(), place_block_symbol(), possible_inline_candidate_p(), possible_polymorphic_call_target_p(), cgraph_edge::possibly_call_in_translation_unit_p(), prevailing_p(), process_function_and_variable_attributes(), symbol_table::process_new_functions(), process_references(), process_references(), process_symver_attribute(), produce_symtab(), produce_symtab_extension(), propagate(), propagate_aggs_across_jump_function(), propagate_constants_across_call(), propagate_constants_topo(), value_topo_info< valtype >::propagate_effects(), propagate_malloc(), propagate_nothrow(), propagate_pure_const(), propagate_vals_across_arith_jfunc(), pure_const_generate_summary(), pure_const_read_summary(), read_ipa_call_summary(), read_thunk_profile(), read_write_all_from_decl(), real_symbol_p(), record_cdtor_fn(), record_eh_tables(), recursive_inlining(), cgraph_edge::recursive_p(), ipa_icf::redirect_all_callers(), cgraph_edge::redirect_call_stmt_to_callee(), redirect_to_specific_clone(), redirect_to_unreachable(), refered_from_nonlocal_fn(), refered_from_nonlocal_var(), referenced_from_vtable_p(), register_symbol(), cgraph_node::release_body(), cgraph_node::remove(), varpool_node::remove(), varpool_node::remove_initializer(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), report_inline_failed_reason(), resolve_alias(), cgraph_node::rtl_info(), save_inline_function_body(), semantically_equivalent_p(), ipa_icf::set_addressable(), ipa_icf::set_alias_uids(), cgraph_edge::set_call_stmt(), set_const_flag_1(), cgraph_node::set_fini_priority(), set_init_priority(), set_malloc_flag_1(), set_new_clone_decl_and_node_flags(), set_noreturn_flag_1(), cgraph_node::set_nothrow_flag(), set_nothrow_flag_1(), set_pure_flag_1(), set_readonly_bit(), set_strub_mode(), set_strub_mode_to(), set_switch_stmt_execution_predicate(), set_writeonly_bit(), simd_clone_adjust(), simd_clone_adjust_argument_types(), simd_clone_adjust_return_type(), simd_clone_clauses_extract(), simd_clone_compute_base_data_type(), simd_clone_create(), simd_clone_init_simd_arrays(), simd_clone_mangle(), speculation_useful_p(), split_function(), strub_always_inline_p(), strub_callable_builtin_p(), strub_from_body_p(), ipa_icf::symbol_compare_collection::symbol_compare_collection(), tree_profiling(), try_make_edge_direct_virtual_call(), try_speculative_devirtualization(), unlikely_executed_stmt_p(), symbol_table::unlink_from_assembler_name_hash(), unregister(), unshare_body(), unvisit_body(), update_call_expr(), update_indirect_edges_after_inlining(), update_profiling_info(), update_type_inheritance_graph(), update_visibility_by_resolution_info(), update_vtable_references(), used_from_object_file_p(), varpool_removal_hook(), vectorizable_simd_clone_call(), verify_base(), cgraph_edge::verify_corresponds_to_fndecl(), cgraph_node::verify_node(), verify_node_partition(), verify_strub(), verify_symtab_nodes(), vrp_will_run_p(), walk_polymorphic_call_targets(), want_early_inline_function_p(), want_inline_self_recursive_call_p(), want_inline_small_function_p(), cgraph_node::will_be_removed_from_program_if_no_direct_calls_p(), worse_state(), and wrapper_heuristics_may_apply().
unsigned symtab_node::definition |
Referenced by cgraph_node::add_new_function(), varpool_node::all_refs_explicit_p(), cgraph_node::analyze(), analyze_functions(), varpool_node::assemble_decl(), binds_to_current_def_p(), can_inline_edge_p(), can_refer_decl_in_current_unit_p(), can_replace_by_local_alias(), cgraph_externally_visible_p(), symbol_table::change_decl_assembler_name(), clone_inlined_nodes(), compare_base_symbol_refs(), ipa_icf::sem_function::compare_polymorphic_p(), compare_virtual_tables(), compute_ltrans_boundary(), copy_bb(), cgraph_node::create_alias(), varpool_node::create_alias(), cgraph_node::create_clone(), create_dispatcher_calls(), cgraph_node::create_thunk(), cgraph_node::create_version_clone(), cgraph_node::create_wrapper(), varpool_node::ctor_useable_for_folding_p(), devirtualization_time_bonus(), dump_base(), dump_tm_clone_pairs(), duplicate_thunk_for_node(), enqueue_references(), estimate_edge_devirt_benefit(), estimate_num_insns(), expand_simd_clones(), expand_target_clones(), varpool_node::externally_visible_p(), varpool_node::finalize_decl(), cgraph_node::finalize_function(), symbol_table::first_defined_function(), symbol_table::first_defined_symbol(), symbol_table::first_defined_variable(), function_and_variable_visibility(), varpool_node::get_availability(), get_partitioning_class(), handle_alias_pairs(), cgraph_node::has_gimple_body_p(), initialize_inline_failed(), inline_always_inline_functions(), input_overwrite_node(), input_varpool_node(), ipa_compute_jump_functions_for_bb(), ipa_devirt(), ipa_dump_fn_summary(), ipa_fn_summary_write(), ipa_inline(), ipa_lower_emutls(), ipa_merge_profiles(), ipa_print_node_params(), ipa_profile_write_summary(), ipa_prop_read_section(), ipa_single_use(), ipa_target_clone(), ipa_write_summaries(), ipcp_propagate_stage(), lto_output_node(), lto_output_varpool_node(), mark_decl_referenced(), maybe_record_node(), needed_p(), symbol_table::next_defined_function(), next_defined_symbol(), symbol_table::next_defined_variable(), non_local_p(), nonzero_address(), ok_for_auto_simd_clone(), optimize_weakref(), output_to_lto_symbol_table_p(), symbol_table::output_variables(), possible_polymorphic_call_target_p(), prevailing_p(), process_function_and_variable_attributes(), process_references(), process_symver_attribute(), propagate_constants_across_call(), propagate_malloc(), pure_const_write_summary(), reachable_from_other_partition_p(), ipa_icf::sem_item_optimizer::read_section(), real_symbol_p(), record_target_from_binfo(), reference_to_unused(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), reset(), resolve_alias(), simd_clone_adjust_argument_types(), simd_clone_create(), symtab_node(), try_speculative_devirtualization(), type_possibly_instantiated_p(), update_type_inheritance_graph(), vect_recog_pow_pattern(), verify_base(), cgraph_node::verify_node(), walk_polymorphic_call_targets(), wrapup_global_declaration_2(), and write_node_summary_p().
unsigned symtab_node::externally_visible |
Referenced by varpool_node::add(), cgraph_node::add_new_function(), address_matters_1(), varpool_node::all_refs_explicit_p(), binds_to_current_def_p(), can_early_inline_edge_p(), can_inline_edge_by_limits_p(), cgraph_node::can_remove_if_no_direct_calls_and_refs_p(), cgraph_node::can_remove_if_no_direct_calls_p(), varpool_node::can_remove_if_no_refs_p(), can_remove_node_now_p(), cgraph_node_cannot_be_local_p_1(), clone_inlined_nodes(), comdat_can_be_unshared_p_1(), compute_strub_mode(), copy_visibility_from(), cgraph_node::create_clone(), create_dispatcher_calls(), cgraph_node::create_version_clone(), cgraph_node::create_version_clone_with_body(), dump_base(), execute_split_functions(), fixup_same_cpp_alias_visibility(), function_and_variable_visibility(), cgraph_node::get_availability(), input_overwrite_node(), input_varpool_node(), ipa_comdats(), ipa_tm_create_version(), ipa_tm_create_version_alias(), lto_output_node(), lto_output_varpool_node(), cgraph_node::make_local(), non_local_p(), cgraph_node::only_called_directly_or_aliased_p(), optimize_weakref(), propagate_single_user(), referenced_from_vtable_p(), symbol_table::remove_unreachable_nodes(), set_new_clone_decl_and_node_flags(), simd_clone_create(), symtab_node(), update_visibility_by_resolution_info(), cgraph_node::verify_node(), and cgraph_node::will_be_removed_from_program_if_no_direct_calls_p().
unsigned symtab_node::force_output |
Referenced by cgraph_node::add_new_function(), address_matters_1(), varpool_node::all_refs_explicit_p(), can_refer_decl_in_current_unit_p(), cgraph_node::can_remove_if_no_direct_calls_and_refs_p(), varpool_node::can_remove_if_no_refs_p(), cgraph_node_cannot_be_local_p_1(), comdat_can_be_unshared_p_1(), create_dispatcher_calls(), create_target_clone(), dump_base(), expand_omp_target(), varpool_node::finalize_decl(), cgraph_node::finalize_function(), function_and_variable_visibility(), get_partitioning_class(), input_offload_tables(), input_overwrite_node(), input_varpool_node(), ipa_comdats(), ipa_pta_execute(), ipa_tm_create_version(), ipa_tm_create_version_alias(), lto_output_node(), lto_output_varpool_node(), mark_decl_referenced(), cgraph_node::mark_force_output(), needed_p(), cgraph_node::only_called_directly_or_aliased_p(), output_offload_tables(), process_function_and_variable_attributes(), refered_from_nonlocal_fn(), refered_from_nonlocal_var(), cgraph_node::remove(), symtab_node(), and cgraph_node::verify_node().
unsigned symtab_node::forced_by_abi |
Referenced by can_refer_decl_in_current_unit_p(), cgraph_node::can_remove_if_no_direct_calls_and_refs_p(), varpool_node::can_remove_if_no_refs_p(), cgraph_node_cannot_be_local_p_1(), comdat_can_be_unshared_p_1(), create_dispatcher_calls(), dump_base(), function_and_variable_visibility(), get_partitioning_class(), input_overwrite_node(), input_varpool_node(), ipa_tm_create_version(), ipa_tm_create_version_alias(), ipa_tm_mark_forced_by_abi_node(), lto_output_node(), lto_output_varpool_node(), cgraph_node::make_local(), needed_p(), optimize_weakref(), cgraph_node::remove(), and symtab_node().
unsigned symtab_node::ifunc_resolver |
Referenced by associate_varinfo_to_alias(), binds_to_current_def_p(), cgraph_node::can_remove_if_no_direct_calls_and_refs_p(), cgraph_node_cannot_be_local_p_1(), check_ifunc_resolver(), cgraph_node::create(), cgraph_node::create_alias(), create_variable_info_for(), do_assemble_alias(), dump_base(), cgraph_node::get_availability(), input_node(), maybe_diag_incompatible_alias(), cgraph_node::only_called_directly_or_aliased_p(), symtab_node(), and verify_base().
unsigned symtab_node::implicit_section |
Referenced by can_increase_alignment_p(), cgraph_node::create_version_clone_with_body(), cgraph_node::create_virtual_clone(), dump_base(), ipa_icf::sem_variable::equals_wpa(), input_overwrite_node(), input_varpool_node(), ipa_tm_create_version(), lto_output_node(), lto_output_varpool_node(), ipa_icf::sem_function::merge(), ipa_icf::sem_variable::merge(), resolve_alias(), set_implicit_section(), set_implicit_section(), set_section_for_node(), set_section_for_node(), symtab_node(), and verify_base().
unsigned symtab_node::in_init_priority_hash |
Referenced by cgraph_node::get_fini_priority(), get_init_priority(), priority_info(), symtab_node(), and unregister().
unsigned symtab_node::in_other_partition |
Referenced by varpool_node::assemble_decl(), binds_to_current_def_p(), can_be_discarded_p(), can_increase_alignment_p(), can_refer_decl_in_current_unit_p(), varpool_node::ctor_useable_for_folding_p(), dump_base(), varpool_node::finalize_named_section_flags(), fndecl_maybe_in_other_partition(), cgraph_node::get_availability(), varpool_node::get_availability(), input_overwrite_node(), input_varpool_node(), ipa_pta_execute(), lto_output_node(), mark_functions_to_output(), non_local_p(), process_references(), reachable_from_other_partition_p(), referenced_from_other_partition_p(), cgraph_node::remove(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), simd_clone_create(), symtab_node(), tree_could_trap_p(), cgraph_edge::verify_corresponds_to_fndecl(), cgraph_node::verify_node(), and verify_node_partition().
struct lto_file_decl_data* symtab_node::lto_file_data |
Referenced by cmp_symbol_files(), copy_function_or_variable(), cgraph_node::create_clone(), varpool_node::ctor_useable_for_folding_p(), dump_base(), varpool_node::get_constructor(), cgraph_node::get_untransformed_body(), input_overwrite_node(), input_symtab(), input_varpool_node(), ipa_merge_profiles(), lto_free_function_in_decl_state_for_node(), lto_output(), merge_profile_summaries(), cgraph_node::release_body(), cgraph_node::remove(), varpool_node::remove(), report_inline_failed_reason(), and symtab_node().
|
private |
Referenced by get_dump_name(), get_uid(), and symtab_node().
unsigned symtab_node::need_lto_streaming |
symtab_node* symtab_node::next |
Referenced by analyze_functions(), cgraph_node::can_remove_if_no_direct_calls_p(), can_remove_node_now_p(), check_speculations_1(), clone_inlined_nodes(), dissolve_same_comdat_group_list(), symbol_table::first_defined_function(), symbol_table::first_defined_symbol(), symbol_table::first_defined_variable(), symbol_table::first_function(), symbol_table::first_function_with_gimple_body(), symbol_table::first_static_initializer(), symbol_table::first_variable(), symbol_table::next_defined_function(), next_defined_symbol(), symbol_table::next_defined_variable(), symbol_table::next_function(), symbol_table::next_function_with_gimple_body(), symbol_table::next_static_initializer(), symbol_table::next_variable(), recursive_inlining(), symbol_table::register_symbol(), cgraph_node::remove(), cgraph_node::remove_symbol_and_inline_clones(), cgraph_node::set_call_stmt_including_clones(), symbol_table::unregister(), and cgraph_node::will_be_removed_from_program_if_no_direct_calls_p().
symtab_node* symtab_node::next_sharing_asm_name |
unsigned symtab_node::no_reorder |
Referenced by varpool_node::add(), cgraph_node::create_clone(), cgraph_node::create_version_clone(), dump_base(), varpool_node::finalize_decl(), cgraph_node::finalize_function(), function_and_variable_visibility(), input_overwrite_node(), input_varpool_node(), ipa_tm_create_version_alias(), lto_output_node(), lto_output_varpool_node(), output_in_order(), symbol_table::output_variables(), process_common_attributes(), symbol_table::remove_unreferenced_decls(), and symtab_node().
unsigned symtab_node::offloadable |
Referenced by cgraph_node::create(), create_omp_child_function(), execute_omp_device_lower(), expand_omp_target(), varpool_node::get_create(), gimplify_adjust_omp_clauses_1(), gimplify_bind_expr(), lower_omp_critical(), lower_omp_target(), omp_discover_declare_target_tgt_fn_r(), omp_discover_declare_target_var_r(), select_what_to_stream(), and symtab_node().
int symtab_node::order |
Referenced by cmp_symbol_files(), copy_function_or_variable(), cgraph_node::create_clone(), dump_callgraph_transformation(), dump_function_header(), cgraph_node::find_replacement(), varpool_node::get_constructor(), cgraph_node::get_create(), cgraph_node::get_untransformed_body(), inline_small_functions(), input_node(), input_varpool_node(), ipa_inline(), ipa_profile(), ipa_sra_summarize_function(), lto_output(), lto_output_node(), lto_output_varpool_node(), ipcp_lattice< valtype >::print(), propagate(), symbol_table::register_symbol(), cgraph_node::remove(), symtab_node(), ipa_icf::sem_item::update_hash_by_addr_refs(), and verify_base().
symtab_node* symtab_node::previous |
Referenced by symbol_table::register_symbol(), and symbol_table::unregister().
symtab_node* symtab_node::previous_sharing_asm_name |
ipa_ref_list symtab_node::ref_list |
Referenced by create_reference(), function_and_variable_visibility(), ipa_tm_create_version(), ipa_tm_create_version_alias(), iterate_direct_aliases(), iterate_reference(), iterate_referring(), num_references(), output_refs(), referenced_from_vtable_p(), register_symbol(), remove_all_references(), remove_all_referring(), resolve_alias(), and symtab_node().
unsigned symtab_node::refuse_visibility_changes |
Referenced by equal_address_to(), mark_weak(), nonzero_address(), and symtab_node().
enum ld_plugin_symbol_resolution symtab_node::resolution |
Referenced by can_be_discarded_p(), cgraph_externally_visible_p(), comdat_can_be_unshared_p_1(), copy_visibility_from(), dump_base(), varpool_node::externally_visible_p(), input_overwrite_node(), input_varpool_node(), localize_node(), lto_output_node(), lto_output_varpool_node(), cgraph_node::make_local(), nonzero_address(), optimize_weakref(), symtab_node(), update_visibility_by_resolution_info(), and used_from_object_file_p().
symtab_node* symtab_node::same_comdat_group |
Referenced by add_to_same_comdat_group(), analyze_functions(), cgraph_node::can_remove_if_no_direct_calls_p(), can_remove_node_now_p(), cgraph_node_cannot_be_local_p_1(), comdat_can_be_unshared_p(), comdat_local_p(), dissolve_same_comdat_group_list(), dump_base(), fixup_same_cpp_alias_visibility(), function_and_variable_visibility(), input_cgraph_1(), input_node(), input_varpool_node(), localize_node(), lto_output_node(), lto_output_varpool_node(), mark_functions_to_output(), remove_from_same_comdat_group(), symbol_table::remove_unreachable_nodes(), symbol_table::remove_unreferenced_decls(), resolve_alias(), split_function(), symtab_node(), update_visibility_by_resolution_info(), verify_base(), cgraph_node::verify_node(), verify_symtab_nodes(), and cgraph_node::will_be_removed_from_program_if_no_direct_calls_p().
unsigned symtab_node::semantic_interposition |
Referenced by cgraph_node::add_new_function(), cgraph_node::analyze(), cgraph_node::create(), varpool_node::create_alias(), cgraph_node::create_clone(), cgraph_node::create_wrapper(), varpool_node::ctor_useable_for_folding_p(), dump_base(), varpool_node::finalize_decl(), cgraph_node::finalize_function(), cgraph_node::get_availability(), varpool_node::get_availability(), input_overwrite_node(), input_varpool_node(), lto_output_node(), lto_output_varpool_node(), set_new_clone_decl_and_node_flags(), symtab_node(), and cgraph_node::verify_node().
unsigned symtab_node::symver |
Referenced by cgraph_externally_visible_p(), cgraph_node_cannot_be_local_p_1(), dump_base(), varpool_node::externally_visible_p(), input_overwrite_node(), input_varpool_node(), lto_output_node(), lto_output_varpool_node(), process_symver_attribute(), resolve_alias(), symtab_node(), and verify_base().
unsigned symtab_node::transparent_alias |
Referenced by cgraph_node::analyze(), binds_to_current_def_p(), can_replace_by_local_alias(), cgraph_externally_visible_p(), symbol_table::change_decl_assembler_name(), compute_ltrans_boundary(), cgraph_node::create_alias(), varpool_node::create_alias(), ctor_for_folding(), dump_base(), equal_address_to(), varpool_node::externally_visible_p(), function_and_variable_visibility(), cgraph_node::get_availability(), varpool_node::get_availability(), get_partitioning_class(), handle_alias_pairs(), input_overwrite_node(), input_varpool_node(), localize_node(), lto_output_node(), lto_output_varpool_node(), noninterposable_alias(), optimize_weakref(), process_function_and_variable_attributes(), real_symbol_p(), symbol_table::remove_unreachable_nodes(), reset(), resolve_alias(), symtab_node(), ultimate_alias_target_1(), and verify_base().
enum symtab_type symtab_node::type |
Referenced by dump_base(), get_symtab_type_string(), propagate_comdat_group(), symtab_node(), and verify_base().
unsigned symtab_node::unique_name |
Referenced by coverage_compute_profile_id(), cgraph_node::create_version_clone_with_body(), cgraph_node::create_virtual_clone(), duplicate_thunk_for_node(), input_overwrite_node(), input_varpool_node(), localize_node(), lto_output_node(), lto_output_varpool_node(), cgraph_node::make_local(), and symtab_node().
unsigned symtab_node::used_from_other_partition |
Referenced by varpool_node::all_refs_explicit_p(), cgraph_node::can_remove_if_no_direct_calls_and_refs_p(), varpool_node::can_remove_if_no_refs_p(), dump_base(), input_overwrite_node(), input_varpool_node(), ipa_comdats(), ipa_pta_execute(), non_local_p(), cgraph_node::only_called_directly_or_aliased_p(), refered_from_nonlocal_fn(), refered_from_nonlocal_var(), referenced_from_vtable_p(), symbol_table::remove_unreachable_nodes(), symtab_node(), and verify_node_partition().
unsigned symtab_node::weakref |
Referenced by can_replace_by_local_alias(), symbol_table::change_decl_assembler_name(), copy_visibility_from(), cgraph_node::create_alias(), varpool_node::create_alias(), dump_base(), function_and_variable_visibility(), handle_alias_pairs(), input_node(), input_overwrite_node(), input_varpool_node(), lto_output_node(), lto_output_varpool_node(), make_decl_local(), noninterposable_alias(), nonzero_address(), optimize_weakref(), symbol_table::output_weakrefs(), process_function_and_variable_attributes(), process_symver_attribute(), symbol_table::remove_unreachable_nodes(), reset(), symtab_node(), and verify_base().
unsigned symtab_node::writeonly |
tree symtab_node::x_comdat_group |
Referenced by get_comdat_group(), get_comdat_group_id(), set_comdat_group(), and symtab_node().
section_hash_entry* symtab_node::x_section |
Referenced by get_section(), set_section_for_node(), set_section_for_node(), and symtab_node().