GCC Middle and Back End API Reference
|
#include <cgraph.h>
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 | |
bool | call_for_symbol_and_aliases_1 (bool(*callback)(cgraph_node *, void *), void *data, bool include_overwritable) |
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 | noninterposable_alias (symtab_node *node, void *data) |
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 *) |
Private Attributes | |
int | m_summary_id |
int | m_uid |
Friends | |
class | symbol_table |
The cgraph data structure. Each function decl has assigned cgraph_node listing callees and callers.
|
inlineexplicit |
References call_site_hash, callees, callers, clone_of, clones, count, count_materialization_scale, former_clone_of, indirect_calls, inlined_to, ipa_transforms_to_apply, next_sibling_clone, NULL, prev_sibling_clone, profile_id, REG_BR_PROB_BASE, rtl, simd_clones, simdclone, SYMTAB_FUNCTION, symtab_node::symtab_node(), and vNULL.
Referenced by add_detected_attribute(), add_new_function(), analyze(), assemble_thunks_and_aliases(), call_for_symbol_and_aliases(), call_for_symbol_and_aliases_1(), call_for_symbol_thunks_and_aliases(), can_remove_if_no_direct_calls_p(), create(), create_alias(), create_clone(), create_edge(), create_edge_including_clones(), create_same_body_alias(), create_thunk(), create_version_clone(), create_version_clone_with_body(), create_virtual_clone(), create_wrapper(), delete_function_version_by_decl(), dump(), dump_cgraph(), dump_graphviz(), expand_all_artificial_thunks(), finalize_function(), find_replacement(), function_or_virtual_thunk_symbol(), function_symbol(), get(), get_availability(), get_create(), get_for_asmname(), get_fun(), get_untransformed_body(), has_thunk_p(), local_info_node(), local_p(), make_local(), mark_address_taken(), materialize_clone(), record_function_versions(), release_body(), remove(), remove_symbol_and_inline_clones(), rtl_info(), set_call_stmt_including_clones(), set_const_flag(), set_malloc_flag(), set_noreturn_flag(), set_nothrow_flag(), set_pure_flag(), ultimate_alias_target(), verify_cgraph_nodes(), verify_node(), and will_be_removed_from_program_if_no_direct_calls_p().
bool cgraph_node::add_detected_attribute | ( | const char * | attr | ) |
Add attribyte ATTR to function and its aliases.
References add_detected_attribute_1(), symtab_node::alias, AVAIL_INTERPOSABLE, cgraph_node(), changed, dyn_cast(), FOR_EACH_ALIAS, get_availability(), and ipa_ref::referring.
Add the function FNDECL to the call graph. Unlike finalize_function, this function is intended to be used by middle end and allows insertion of new function at arbitrary point of compilation. The function can be either in high, low or SSA form GIMPLE. The function is assumed to be reachable and have address taken (so no API breaking optimizations are performed on it). Main work done by this function is to enqueue the function for later processing to avoid need the passes to be re-entrant.
References gcc::pass_manager::all_lowering_passes, analyze(), bitmap_obstack_initialize(), bitmap_obstack_release(), cfun, cgraph_new_nodes, cgraph_node(), CONSTRUCTION, create(), DECL_FUNCTION_PERSONALITY, DECL_STRUCT_FUNCTION, symtab_node::definition, dump_file, lang_hooks::eh_personality, eh_personality_lang, gcc::pass_manager::execute_early_local_passes(), execute_pass_list(), expand(), EXPANSION, symtab_node::externally_visible, finalize_function(), FINISHED, fndecl_name(), symtab_node::force_output, function_needs_eh_personality(), g, gcc_unreachable, get_create(), gimple_has_body_p(), gimple_in_ssa_p(), gimple_register_cfg_hooks(), IPA, IPA_SSA, IPA_SSA_AFTER_INLINING, local, lowered, NULL, opt_for_fn, PARSING, pop_cfun(), push_cfun(), symtab_node::semantic_interposition, symtab, and TREE_PUBLIC.
Referenced by cgraph_build_static_cdtor_1(), expand_omp_target(), expand_omp_taskreg(), finalize_task_copyfn(), and lower_assumption().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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().
void cgraph_node::analyze | ( | void | ) |
Analyze the function scheduled to be output.
References symtab_node::alias, thunk_info::alias, symtab_node::alias_target, analyze(), symtab_node::analyzed, assign_assembler_name_if_needed(), bitmap_obstack_initialize(), bitmap_obstack_release(), callees, cfun, cgraph_node(), compact_blocks(), count, create_edge(), symtab_node::decl, DECL_SOURCE_LOCATION, DECL_STRUCT_FUNCTION, symtab_node::definition, dispatcher_function, cgraph_function_version_info::dispatcher_resolver, execute_pass_list(), expand_thunk(), first_nested_function(), function_version(), g, gcc_assert, get(), thunk_info::get(), get_alias_target(), gimple_has_body_p(), gimple_register_cfg_hooks(), gimplify_function_tree(), input_location, lower_nested_functions(), lowered, symtab_node::native_rtl_p(), NULL, NULL_TREE, opt_for_fn, pop_cfun(), push_cfun(), symtab_node::resolve_alias(), symtab_node::semantic_interposition, targetm, thunk, symtab_node::transparent_alias, and TREE_NOTHROW.
Referenced by add_new_function(), analyze(), analyze_functions(), create_wrapper(), and symbol_table::process_new_functions().
|
inherited |
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().
void cgraph_node::assemble_thunks_and_aliases | ( | void | ) |
Assemble thunks and aliases associated to node.
References symtab_node::alias, cgraph_edge::caller, callers, cgraph_node(), symtab_node::decl, DECL_ASSEMBLER_NAME, do_assemble_alias(), do_assemble_symver(), dyn_cast(), expand_thunk(), FOR_EACH_ALIAS, inlined_to, cgraph_edge::next_caller, ipa_ref::referring, thunk, and TREE_ASM_WRITTEN.
Referenced by expand().
|
inherited |
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 function and aliases associated to the function. When INCLUDE_OVERWRITABLE is false, overwritable symbols are skipped.
References AVAIL_INTERPOSABLE, call_for_symbol_and_aliases_1(), cgraph_node(), get_availability(), and symtab_node::has_aliases_p().
Referenced by can_remove_if_no_direct_calls_p(), symtab_node::check_ifunc_callee_symtab_nodes(), estimate_growth(), growth_positive_p(), inline_small_functions(), ipa_inline(), ipa_make_function_const(), ipa_make_function_pure(), ipa_propagate_frequency(), is_proper_for_analysis(), ipa_icf::sem_function::merge(), only_called_directly_p(), ipa_icf::redirect_all_callers(), symbol_table::remove_unreachable_nodes(), and want_inline_function_to_all_callers_p().
|
inlineinherited |
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().
|
private |
A worker for call_for_symbol_and_aliases.
References symtab_node::alias, AVAIL_INTERPOSABLE, cgraph_node(), dyn_cast(), FOR_EACH_ALIAS, and ipa_ref::referring.
Referenced by call_for_symbol_and_aliases().
|
protectedinherited |
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().
bool cgraph_node::call_for_symbol_thunks_and_aliases | ( | bool(* | callback )(cgraph_node *node, void *data), |
void * | data, | ||
bool | include_overwritable, | ||
bool | exclude_virtual_thunks = false ) |
Call callback on cgraph_node, thunks and aliases associated to cgraph_node. When INCLUDE_OVERWRITABLE is false, overwritable symbols are skipped. When EXCLUDE_VIRTUAL_THUNKS is true, virtual thunks are skipped.
References symtab_node::alias, AVAIL_AVAILABLE, AVAIL_INTERPOSABLE, call_for_symbol_thunks_and_aliases(), cgraph_edge::caller, callers, cgraph_node(), dyn_cast(), FOR_EACH_ALIAS, thunk_info::get(), get_availability(), cgraph_edge::next_caller, ipa_ref::referring, and thunk.
Referenced by adjust_references_in_caller(), call_for_symbol_thunks_and_aliases(), called_with_type_override_p(), can_be_local_p(), collect_callers(), dump_final_node_vcg(), estimate_local_effects(), has_undead_caller_from_outside_scc_p(), identify_dead_nodes(), initialize_node_lattices(), ipa_pta_execute(), ipa_tm_create_version(), ipcp_cloning_candidate_p(), local_p(), make_local(), ipa_icf::sem_function::merge(), set_pure_flag(), and update_profiling_info().
|
inlineinherited |
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 cgraph_node::can_be_local_p | ( | void | ) |
Return true if cgraph_node can be made local for API change. Extern inline functions and C++ COMDAT functions can be made local at the expense of possible code size growth if function is used in multiple compilation units.
References symtab_node::address_taken, call_for_symbol_thunks_and_aliases(), cgraph_node_cannot_be_local_p_1(), and NULL.
Referenced by clone_for_param_removal_p(), compute_strub_mode(), and make_local().
|
inherited |
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().
|
inline |
Return true when function can be removed from callgraph if all direct calls are eliminated.
References symtab_node::decl, DECL_COMDAT, DECL_EXTERNAL, DECL_STATIC_CONSTRUCTOR, DECL_STATIC_DESTRUCTOR, symtab_node::externally_visible, symtab_node::force_output, symtab_node::forced_by_abi, gcc_checking_assert, symtab_node::ifunc_resolver, inlined_to, symtab_node::used_from_object_file_p(), and symtab_node::used_from_other_partition.
Referenced by can_remove_if_no_direct_calls_p(), can_remove_node_now_p_1(), check_callers(), nonremovable_p(), and symbol_table::remove_unreachable_nodes().
Return true if whole comdat group can be removed if there are no direct calls to THIS.
References symtab_node::address_taken, call_for_symbol_and_aliases(), can_remove_if_no_direct_calls_and_refs_p(), cgraph_node(), symtab_node::decl, DECL_EXTERNAL, dyn_cast(), symtab_node::externally_visible, symtab_node::get_comdat_group(), i, symtab_node::iterate_referring(), symtab_node::next, nonremovable_p(), NULL, ipa_ref::referring, symtab_node::same_comdat_group, and ultimate_alias_target().
Referenced by ipa_icf::sem_function::merge(), offline_size(), ipa_icf::redirect_all_callers(), and will_be_removed_from_program_if_no_direct_calls_p().
bool cgraph_node::cannot_return_p | ( | void | ) |
Return true when cgraph_node cannot return or throw and thus it is safe to ignore its side effects for IPA analysis.
References symtab_node::decl, ECF_NORETURN, ECF_NOTHROW, flags_from_decl_or_type(), and opt_for_fn.
Referenced by analyze_function(), analyze_function(), propagate(), and read_write_all_from_decl().
bool cgraph_node::check_calls_comdat_local_p | ( | ) |
Check if function calls comdat local. This is used to recompute calls_comdat_local flag after function transformations.
References callees.
Referenced by inline_call(), cgraph_edge::redirect_callee(), and verify_node().
|
staticinherited |
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 |
Verify cgraph, if consistency checking is enabled.
References verify_cgraph_nodes().
Referenced by ipa_tm_execute().
|
inlinestaticinherited |
References verify_symtab_nodes().
Referenced by symbol_table::compile(), and symbol_table::remove_unreachable_nodes().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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.
auto_vec< cgraph_edge * > cgraph_node::collect_callers | ( | void | ) |
Collect all callers of cgraph_node and its aliases that are known to lead to cgraph_node (i.e. are not overwritable).
References call_for_symbol_thunks_and_aliases(), and collect_callers_of_node_1().
Referenced by decide_whether_version_node().
|
inlineinherited |
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().
|
inherited |
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().
|
static |
Return cgraph node assigned to DECL. Create new one when needed.
References cgraph_node(), symtab_node::decl, DECL_ATTRIBUTES, g, gcc_assert, symtab_node::ifunc_resolver, lookup_attribute(), maybe_record_nested_function(), symtab_node::offloadable, opt_for_fn, symtab_node::register_symbol(), symtab_node::semantic_interposition, symtab, and TREE_CODE.
Referenced by add_new_function(), create_thunk(), create_version_clone(), duplicate_thunk_for_node(), expand_call_tm(), get_create(), and walk_polymorphic_call_targets().
|
static |
Mark ALIAS as an alias to DECL. DECL_NODE is cgraph node representing the function body is associated with (not necessarily cgraph_node (DECL)).
References symtab_node::alias, symtab_node::alias_target, cgraph_node(), DECL_ATTRIBUTES, symtab_node::definition, gcc_assert, get_create(), symtab_node::ifunc_resolver, lookup_attribute(), NULL, symtab_node::transparent_alias, TREE_CODE, and symtab_node::weakref.
Referenced by create_same_body_alias(), handle_alias_pairs(), ipa_icf::sem_function::merge(), and symtab_node::noninterposable_alias().
cgraph_node * cgraph_node::create_clone | ( | tree | new_decl, |
profile_count | prof_count, | ||
bool | update_original, | ||
vec< cgraph_edge * > | redirect_callers, | ||
bool | call_duplication_hook, | ||
cgraph_node * | new_inlined_to, | ||
ipa_param_adjustments * | param_adjustments, | ||
const char * | suffix = NULL ) |
Create node representing clone of N executed COUNT times. Decrease the execution counts from original node too. The new clone will have decl set to DECL that may or may not be the same as decl of N. When UPDATE_ORIGINAL is true, the counts are subtracted from the original function's profile to reflect the fact that part of execution is handled by node. When CALL_DUPLICATION_HOOK is true, the ipa passes are acknowledged about the new clone. Otherwise the caller is responsible for doing so later. If the new node is being inlined into another one, NEW_INLINED_TO should be the outline function the new one is (even indirectly) inlined to. All hooks will see this in node's inlined_to, when invoked. Can be NULL if the node is not inlined. If PARAM_ADJUSTMENTS is non-NULL, the parameter manipulation information will be overwritten by the new structure. Otherwise the new node will share parameter manipulation information with the original node.
References symtab_node::analyzed, cgraph_edge::call_stmt, cgraph_edge::callee, callees, can_change_signature, cgraph_node(), cgraph_edge::clone(), clone_of, symtab_node::clone_references(), clones, count, symtab_node::decl, symtab_node::definition, dump_callgraph_transformation(), expand_all_artificial_thunks(), symtab_node::externally_visible, fndecl_built_in_p(), FOR_EACH_VEC_ELT, frequency, clone_info::get(), clone_info::get_create(), has_omp_variant_constructs, i, icf_merged, indirect_calls, inlined_to, profile_count::ipa(), local, localize_profile(), symtab_node::lto_file_data, cgraph_edge::lto_stmt_uid, merged_comdat, merged_extern_inline, cgraph_edge::next_callee, next_sibling_clone, symtab_node::no_reorder, opt_for_fn, symtab_node::order, clone_info::param_adjustments, redefined_extern_inline, cgraph_edge::redirect_callee_duplicating_thunks(), symtab_node::register_symbol(), rtl, symtab_node::semantic_interposition, split_part, symtab, thunk, tm_clone, tm_may_enter_irr, tp_first_run, unit_id, and versionable.
Referenced by clone_inlined_nodes(), create_virtual_clone(), and recursive_inlining().
cgraph_edge * cgraph_node::create_edge | ( | cgraph_node * | callee, |
gcall * | call_stmt, | ||
profile_count | count, | ||
bool | cloning_p = false ) |
Create edge from a given function to CALLEE in the cgraph. CLONING_P should be set if properties that are copied from an original edge should not be calculated.
References callees, callers, cgraph_node(), count, initialize_inline_failed(), cgraph_edge::prev_caller, and symtab.
Referenced by add_call_edges_for_seq(), analyze(), cgraph_update_edges_for_call_stmt_node(), cgraph_edge::clone(), create_edge_including_clones(), create_wrapper(), duplicate_thunk_for_node(), execute_fixup_cfg(), gen_emutls_addr(), input_edge(), ipa_tm_insert_gettmclone_call(), ipa_tm_insert_irr_call(), cgraph_edge::make_speculative(), cgraph_edge::rebuild_edges(), simd_clone_adjust(), and ubsan_create_edge().
void cgraph_node::create_edge_including_clones | ( | cgraph_node * | callee, |
gimple * | old_stmt, | ||
gcall * | stmt, | ||
profile_count | count, | ||
cgraph_inline_failed_t | reason ) |
Like cgraph_create_edge walk the clone tree and update all clones sharing same function body. If clones already have edge for OLD_STMT; only update the edge same way as cgraph_set_call_stmt_including_clones does. TODO: COUNT and LOOP_DEPTH should be properly distributed based on relative frequencies of the clones.
References cgraph_node(), clone_of, clones, count, create_edge(), get_edge(), next_sibling_clone, cgraph_edge::set_call_stmt(), and thunk.
cgraph_edge * cgraph_node::create_indirect_edge | ( | gcall * | call_stmt, |
int | ecf_flags, | ||
profile_count | count, | ||
bool | cloning_p = false ) |
Create an indirect edge with a yet-undetermined callee where the call statement destination is a formal parameter of the caller with index PARAM_INDEX. CLONING_P should be set if properties that are copied from an original edge should not be calculated and indirect_info structure should not be calculated.
References cgraph_allocate_init_indirect_info(), count, symtab_node::decl, gcc_assert, gimple_call_fn(), indirect_calls, initialize_inline_failed(), NULL, obj_type_ref_class(), OBJ_TYPE_REF_TOKEN, symtab, TREE_CODE, tree_to_uhwi(), and virtual_method_call_p().
Referenced by cgraph_edge::clone(), input_edge(), and cgraph_edge::rebuild_edges().
|
inherited |
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().
|
inherited |
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.
|
static |
Attempt to mark ALIAS as an alias to DECL. Return alias node if successful and NULL otherwise. Same body aliases are output whenever the body of DECL is output, and cgraph_node::get (ALIAS) transparently returns cgraph_node::get (DECL).
References symtab_node::alias, cgraph_node(), symtab_node::cpp_implicit_alias, create_alias(), symtab_node::decl, get(), NULL, symtab_node::resolve_alias(), symtab, and TARGET_SUPPORTS_ALIASES.
Referenced by ipa_tm_create_version_alias().
cgraph_node * cgraph_node::create_thunk | ( | tree | alias, |
tree | , | ||
bool | this_adjusting, | ||
HOST_WIDE_INT | fixed_offset, | ||
HOST_WIDE_INT | virtual_value, | ||
HOST_WIDE_INT | indirect_offset, | ||
tree | virtual_offset, | ||
tree | real_alias ) |
Add thunk alias into callgraph. The alias declaration is ALIAS and it aliases DECL with an adjustments made into the first parameter. See comments in struct cgraph_thunk_info for detail on the parameters.
References symtab_node::alias, cgraph_node(), CONSTRUCTION, create(), symtab_node::definition, gcc_checking_assert, get(), thunk_info::get_create(), i, NULL, symtab_node::reset(), symtab, thunk, and wi::to_wide().
cgraph_node * cgraph_node::create_version_clone | ( | tree | new_decl, |
vec< cgraph_edge * > | redirect_callers, | ||
bitmap | bbs_to_copy, | ||
const char * | suffix = NULL ) |
Create a new cgraph node which is the new version of callgraph node. REDIRECT_CALLERS holds the callers edges which should be redirected to point to NEW_VERSION. ALL the callees edges of the node are cloned to the new version node. Return the new version node. If non-NULL BLOCK_TO_COPY determine what basic blocks was copied to prevent duplications of calls that are dead in the clone.
References symtab_node::analyzed, bitmap_bit_p, cgraph_edge::call_stmt, callees, cgraph_node(), cgraph_edge::clone(), count, create(), symtab_node::definition, dump_callgraph_transformation(), symtab_node::externally_visible, FOR_EACH_VEC_ELT, gimple_bb(), i, indirect_calls, inlined_to, local, cgraph_edge::lto_stmt_uid, merged_comdat, merged_extern_inline, cgraph_edge::next_callee, symtab_node::no_reorder, cgraph_edge::redirect_callee(), rtl, and unit_id.
Referenced by create_version_clone_with_body(), ipa_tm_create_version(), and simd_clone_create().
cgraph_node * cgraph_node::create_version_clone_with_body | ( | vec< cgraph_edge * > | redirect_callers, |
vec< ipa_replace_map *, va_gc > * | tree_map, | ||
ipa_param_adjustments * | param_adjustments, | ||
bitmap | bbs_to_copy, | ||
basic_block | new_entry_block, | ||
const char * | suffix, | ||
tree | target_attributes = NULL_TREE, | ||
bool | version_decl = true ) |
Perform function versioning. Function versioning includes copying of the tree and a callgraph update (creating a new cgraph node and updating its callees and callers). REDIRECT_CALLERS varray includes the edges to be redirected to the new version. TREE_MAP is a mapping of tree nodes we want to replace with new ones (according to results of prior analysis). If non-NULL ARGS_TO_SKIP determine function parameters to remove from new version. If SKIP_RETURN is true, the new version will return void. If non-NULL BLOCK_TO_COPY determine what basic blocks to copy. If non_NULL NEW_ENTRY determine new entry BB of the clone. If TARGET_ATTRIBUTES is non-null, when creating a new declaration, add the attributes to DECL_ATTRIBUTES. And call valid_attribute_p that will promote value of the attribute DECL_FUNCTION_SPECIFIC_TARGET of the declaration. If VERSION_DECL is set true, use clone_function_name_numbered for the function clone. Otherwise, use clone_function_name. Return the new version's cgraph node.
References ipa_param_adjustments::adjust_decl(), cgraph_node(), clone_function_name(), clone_function_name_numbered(), copy_node(), create_version_clone(), symtab_node::decl, DECL_ATTRIBUTES, DECL_COMDAT, DECL_EXTERNAL, DECL_IS_REPLACEABLE_OPERATOR, DECL_NAME, DECL_SET_IS_OPERATOR_DELETE, DECL_SET_IS_OPERATOR_NEW, DECL_SOURCE_LOCATION, DECL_STATIC_CONSTRUCTOR, DECL_STATIC_DESTRUCTOR, DECL_VIRTUAL_P, DECL_WEAK, symtab_node::externally_visible, gcc_unreachable, get_attribute_name(), IDENTIFIER_POINTER, symtab_node::implicit_section, input_location, ipa_transforms_to_apply, local, lowered, symtab_node::make_decl_local(), NULL, r, SET_DECL_ASSEMBLER_NAME, SET_DECL_RTL, symtab_node::set_section(), symtab, targetm, tree_function_versioning(), TREE_PUBLIC, TREE_VALUE, tree_versionable_function_p(), symtab_node::unique_name, and update_call_expr().
Referenced by create_target_clone(), simd_clone_create(), and split_function().
cgraph_node * cgraph_node::create_virtual_clone | ( | const vec< cgraph_edge * > & | redirect_callers, |
vec< ipa_replace_map *, va_gc > * | tree_map, | ||
ipa_param_adjustments * | param_adjustments, | ||
const char * | suffix, | ||
unsigned | num_suffix ) |
Create callgraph node clone with new declaration. The actual body will be copied later at compilation stage. The name of the new clone will be constructed from the name of the original node, SUFFIX and NUM_SUFFIX. TODO: after merging in ipa-sra use function call notes instead of args_to_skip bitmap interface.
References ipa_param_adjustments::adjust_decl(), can_change_signature, cgraph_node(), clone_function_name(), copy_node(), count, create_clone(), symtab_node::decl, DECL_ARGUMENTS, DECL_COMDAT, DECL_EXTERNAL, DECL_INITIAL, DECL_NAME, DECL_RESULT, DECL_STRUCT_FUNCTION, DECL_WEAK, FOR_EACH_VEC_SAFE_ELT, gcc_assert, gcc_checking_assert, get_base_address(), clone_info::get_create(), get_identifier(), i, IDENTIFIER_LENGTH, IDENTIFIER_POINTER, symtab_node::implicit_section, ipa_transforms_to_apply, ipcp_clone, map, symtab_node::maybe_create_reference(), symtab_node::name(), NULL, SET_DECL_ASSEMBLER_NAME, SET_DECL_RTL, set_new_clone_decl_and_node_flags(), symtab_node::set_section(), symtab, TREE_CODE, clone_info::tree_map, TREE_OPERAND, TREE_PUBLIC, symtab_node::unique_name, and versionable.
Referenced by create_specialized_node().
void cgraph_node::create_wrapper | ( | cgraph_node * | target | ) |
Creates a wrapper from cgraph_node to TARGET node. Thunk is used for this kind of wrapper method.
References allocate_struct_function(), analyze(), callees, cgraph_node(), count, create_edge(), symtab_node::decl, DECL_ARGUMENTS, DECL_INITIAL, DECL_RESULT, DECL_UNINLINABLE, symtab_node::definition, expand_thunk(), gcc_checking_assert, thunk_info::get(), thunk_info::get_create(), inline_analyze_function(), NULL, opt_for_fn, release_body(), thunk_info::remove(), symtab_node::reset(), symtab_node::semantic_interposition, set_cfun(), thunk, TREE_ADDRESSABLE, TREE_CHAIN, and TREE_NOTHROW.
Referenced by ipa_icf::sem_function::merge().
DEBUG_FUNCTION void cgraph_node::debug | ( | void | ) |
Dump call graph node NODE to stderr.
References dump().
Referenced by symbol_table::compile(), and mark_functions_to_output().
|
inlinestatic |
References dump_cgraph().
|
inherited |
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().
|
static |
Remove the cgraph_function_version_info and cgraph_node for DECL. This DECL is a duplicate declaration.
References cgraph_node(), symtab_node::decl, delete_function_version(), function_version(), get(), NULL, and remove().
|
inherited |
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 cgraph_node::dump | ( | FILE * | f | ) |
Dump call graph node to file F.
References profile_count::apply_scale(), symtab_node::body_removed, callees, callers, calls_comdat_local, cgraph_availability_names, cgraph_node(), clone_of, count, symtab_node::decl, DECL_IS_MALLOC, DECL_IS_OPERATOR_DELETE_P, DECL_IS_OPERATOR_NEW_P, DECL_IS_REPLACEABLE_OPERATOR, lang_hooks::decl_printable_name, DECL_STATIC_CHAIN, DECL_STATIC_CONSTRUCTOR, DECL_STATIC_DESTRUCTOR, cgraph_function_version_info::dispatcher_resolver, profile_count::dump(), thunk_info::dump(), symtab_node::dump_asm_name(), symtab_node::dump_base(), symtab_node::dump_name(), dyn_cast(), EXPANSION, FOR_EACH_ALIAS, former_thunk_p(), frequency, profile_count::from_gcov_type(), function_version(), gcc_checking_assert, thunk_info::get(), get_availability(), get_fini_priority(), symtab_node::get_init_priority(), gimple_has_body_p(), icf_merged, indirect_call_target, indirect_calls, inlined_to, local, merged_comdat, merged_extern_inline, nested_function_origin(), cgraph_function_version_info::next, NODE_FREQUENCY_EXECUTED_ONCE, NODE_FREQUENCY_HOT, NODE_FREQUENCY_UNLIKELY_EXECUTED, nonfreeing_fn, NULL, NULL_TREE, only_called_at_exit, only_called_at_startup, only_called_directly_p(), opt_for_fn, parallelized_function, cgraph_function_version_info::prev, PRId64, print_generic_expr(), process, profile_id, redefined_extern_inline, ipa_ref::referring, split_part, symtab, TDF_SLIM, cgraph_function_version_info::this_node, thunk, tm_clone, tp_first_run, ultimate_alias_target(), unit_id, and profile_count::zero().
Referenced by debug(), dump_cgraph(), function_called_by_processed_nodes_p(), and verify_node().
|
inherited |
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().
|
protectedinherited |
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().
|
static |
Dump the callgraph to file F.
References cgraph_node(), dump(), and FOR_EACH_FUNCTION.
Referenced by debug_cgraph(), propagate(), propagate_nothrow(), and propagate_pure_const().
void cgraph_node::dump_graphviz | ( | FILE * | f | ) |
Dump call graph node to file F in graphviz format.
References callees, cgraph_node(), and symtab_node::dump_name().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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().
void cgraph_node::expand | ( | void | ) |
Expand function specified by node.
References announce_function(), assemble_thunks_and_aliases(), bitmap_obstack_initialize(), bitmap_obstack_release(), cfun, compare_tree_int(), symtab_node::decl, DECL_EXTERNAL, DECL_INITIAL, DECL_SOURCE_LOCATION, DECL_STRUCT_FUNCTION, error_mark_node, execute_all_ipa_transforms(), execute_pass_list(), g, gcc_assert, get_untransformed_body(), gimple_register_cfg_hooks(), gimple_set_body(), init_function_start(), inlined_to, input_location, invoke_plugin_callbacks(), ipa_transforms_to_apply, lowered, symtab_node::native_rtl_p(), NULL, pop_cfun(), process, push_cfun(), reg_obstack, release_body(), symtab, timevar_pop(), timevar_push(), TODO_update_ssa_only_virtuals, TREE_ASM_WRITTEN, TREE_CODE, TREE_INT_CST_LOW, TREE_TYPE, TYPE_SIZE_UNIT, update_ssa(), and warning().
Referenced by add_new_function(), expand_all_functions(), and symbol_table::process_new_functions().
void cgraph_node::expand_all_artificial_thunks | ( | ) |
Call expand_thunk on all callers that are thunks and if analyze those nodes that were expanded.
References cgraph_edge::caller, callers, cgraph_node(), expand_thunk(), inline_analyze_function(), ipa_analyze_node(), cgraph_edge::next_caller, and thunk.
Referenced by create_clone(), create_specialized_node(), and perhaps_add_new_callers().
DECL has been parsed. Take it, queue it, compile it at the whim of the logic in effect. If NO_COLLECT is true, then our caller cannot stand to have the garbage collector run at the moment. We would need to either create a new GC context, or just not compile right now.
References cgraph_node(), CONSTRUCTION, symtab_node::cpp_implicit_alias, debug_hooks, symtab_node::decl, DECL_COMDAT, DECL_CONTEXT, DECL_DECLARED_INLINE_P, DECL_DISREGARD_INLINE_LIMITS, DECL_EXTERNAL, DECL_STRUCT_FUNCTION, symtab_node::definition, enqueue_node(), symtab_node::force_output, gcc_assert, get_create(), lowered, symtab_node::native_rtl_p(), symtab_node::needed_p(), symtab_node::no_reorder, notice_global_symbol(), NULL, opt_for_fn, redefined_extern_inline, symtab_node::referred_to_p(), symtab_node::reset(), symtab_node::semantic_interposition, symtab, TREE_ASM_WRITTEN, and TREE_CODE.
Referenced by add_new_function(), function_reader::create_function(), finalize_size_functions(), symbol_table::process_new_functions(), and unnest_nesting_tree_1().
|
inherited |
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().
cgraph_node * cgraph_node::find_replacement | ( | struct clone_info * | info | ) |
callgraph node being removed from symbol table; see if its entry can be replaced by other inline clone. INFO is clone info to attach to the new root.
References cgraph_node(), clone_of, clones, symtab_node::decl, gcc_assert, clone_info::get_create(), next_sibling_clone, NULL, symtab_node::order, and prev_sibling_clone.
|
inherited |
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().
bool cgraph_node::former_thunk_p | ( | void | ) |
Return true if this node represents a former, i.e. an expanded, thunk.
References gcc_checking_assert, thunk_info::get(), i, and thunk.
Referenced by clone_of_p(), dump(), and ipa_icf::sem_function::equals_wpa().
cgraph_node * cgraph_node::function_or_virtual_thunk_symbol | ( | enum availability * | availability = NULL, |
struct symtab_node * | ref = NULL ) |
Walk the alias chain to return the function cgraph_node is alias of. Walk through non virtual thunks, too. Thus we return either a function or a virtual thunk 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 a, cgraph_edge::callee, callees, cgraph_node(), thunk_info::get(), NULL, symtab_node::symtab_node(), thunk, and ultimate_alias_target().
Referenced by ignore_edge_for_nothrow(), ignore_edge_for_pure_const(), ignore_edge_p(), ignore_edge_p(), ignore_edge_p(), and ipcp_propagate_stage().
cgraph_node * cgraph_node::function_symbol | ( | enum availability * | availability = NULL, |
struct symtab_node * | ref = NULL ) |
Walk the alias chain to return the function cgraph_node is alias of. Walk through thunks, too. 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 a, cgraph_edge::callee, callees, cgraph_node(), NULL, symtab_node::symtab_node(), thunk, and ultimate_alias_target().
Referenced by calls_same_node_or_its_all_contexts_clone_p(), check_argument_count(), devirtualization_time_bonus(), estimate_edge_devirt_benefit(), function_and_variable_visibility(), get_read_write_all_from_node(), ipa_devirt(), ipa_edge_within_scc(), ipa_reference_get_read_global(), ipa_reference_get_written_global(), merge_aggregate_lattices(), nonfreeing_call_p(), propagate_aggs_across_jump_function(), propagate_bits(), propagate_bits_across_jump_function(), propagate_constants_across_call(), propagate_constants_topo(), value_topo_info< valtype >::propagate_effects(), symbol_table::remove_unreachable_nodes(), self_recursive_agg_pass_through_p(), self_recursive_p(), self_recursive_pass_through_p(), spread_undeadness(), tree_could_trap_p(), try_speculative_devirtualization(), update_indirect_edges_after_inlining(), and walk_polymorphic_call_targets().
cgraph_function_version_info * cgraph_node::function_version | ( | void | ) |
Get the cgraph_function_version_info node corresponding to node.
References cgraph_fnver_htab, NULL, and cgraph_function_version_info::this_node.
Referenced by analyze(), create_dispatcher_calls(), delete_function_version_by_decl(), dump(), expand_target_clones(), record_function_versions(), redirect_to_specific_clone(), and remove().
|
inlinestatic |
References cgraph_node(), symtab_node::decl, dyn_cast(), gcc_checking_assert, symtab_node::get(), and TREE_CODE.
Referenced by autofdo::afdo_annotate_cfg(), autofdo::afdo_indirect_call(), autofdo::afdo_vpt_for_early_inline(), analyze(), autofdo::auto_profile(), call_may_clobber_ref_p_1(), cgraph_update_edges_for_call_stmt(), check_for_nested_with_variably_modified(), cgraph_edge::clone(), ipa_icf_gimple::func_checker::compare_gimple_call(), computation_cost(), compute_fn_summary_for_current(), compute_function_frequency(), compute_value_histograms(), convert_all_function_calls(), coverage_begin_function(), coverage_end_function(), create_dispatcher_calls(), create_same_body_alias(), create_task_copyfn(), create_thunk(), create_variable_info_for(), decide_function_section(), decl_fini_priority_insert(), decl_fini_priority_lookup(), decl_is_tm_clone(), default_binds_local_p_3(), default_function_section(), delete_function_version_by_decl(), determine_global_memory_access(), determine_unlikely_bbs(), devirtualization_time_bonus(), do_assemble_alias(), dse_optimize_call(), dump_final_node_vcg(), dump_function_header(), dump_tm_clone_pairs(), autofdo::early_inline(), early_inliner(), estimate_edge_devirt_benefit(), estimate_num_insns(), execute_all_ipa_transforms(), execute_fixup_cfg(), execute_omp_device_lower(), execute_one_pass(), execute_ranger_vrp(), execute_split_functions(), expand_call_tm(), expand_late_variant_directive(), expand_omp_target(), expand_omp_taskreg(), fndecl_maybe_in_other_partition(), function_called_by_processed_nodes_p(), function_section_1(), get_coverage_counts(), get_create(), get_modref_function_summary(), get_modref_function_summary(), gimple_call_arg_flags(), gimple_call_retslot_flags(), gimple_call_static_chain_flags(), gimple_fold_call(), gimple_gen_ic_func_profiler(), gimplify_bind_expr(), gimplify_expr(), gimplify_variant_call_expr(), handle_alias_pairs(), if_convertible_stmt_p(), inline_small_functions(), input_offload_tables(), ipa_get_indirect_edge_target_1(), ipa_make_edge_direct_to_target(), ipa_polymorphic_call_context::ipa_polymorphic_call_context(), ipa_record_return_value_range(), ipa_return_value_range(), ipa_tm_decrement_clone_counts(), ipa_tm_execute(), ipa_tm_insert_gettmclone_call(), ipa_tm_mayenterirr_function(), ipa_tm_scan_calls_block(), ipa_tm_scan_irr_block(), ipcp_get_aggregate_const(), ipcp_get_parm_bits(), is_pass_explicitly_enabled_or_disabled(), local_info_node(), lower_nested_functions(), lower_omp_critical(), maybe_diag_incompatible_alias(), maybe_hot_count_p(), maybe_materialize_called_clones(), maybe_record_node(), ipa_param_adjustments::modify_call(), need_assembler_name_p(), new_omp_context(), nonfreeing_call_p(), omp_complete_construct_context(), omp_dynamic_cond(), omp_maybe_offloaded_ctx(), optimize_function_for_size_p(), optimize_inline_calls(), parallelized_function_p(), probably_never_executed(), propagate_controlled_uses(), prune_offload_funcs(), cgraph_edge::rebuild_edges(), cgraph_edge::rebuild_references(), record_cdtor_fn(), cgraph_edge::redirect_call_stmt_to_callee(), ref_maybe_used_by_call_p_1(), reference_to_unused(), remove(), symbol_table::remove_unreachable_nodes(), rtl_info(), save_inline_function_body(), cgraph_edge::set_call_stmt(), set_nothrow_function_flags(), simd_clone_call_p(), split_function(), stmt_kills_ref_p(), tree_could_trap_p(), tree_function_versioning(), tree_profiling(), try_make_edge_direct_virtual_call(), ubsan_create_edge(), unlikely_executed_stmt_p(), unnest_nesting_tree_1(), unshare_body(), unvisit_body(), update_call_edge_frequencies(), vect_get_datarefs_in_loop(), vectorizable_simd_clone_call(), cgraph_edge::verify_corresponds_to_fndecl(), and write_symbol().
|
inline |
Return node that alias is aliasing.
References dyn_cast(), and symtab_node::get_alias_target().
Referenced by analyze(), call_passes_through_thunk(), cgraph_externally_visible_p(), create_variable_info_for(), and get_cg_data().
|
inlineinherited |
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().
enum availability cgraph_node::get_availability | ( | symtab_node * | ref = NULL | ) |
Return function availability. See cgraph.h for description of individual return values.
References symtab_node::analyzed, AVAIL_AVAILABLE, AVAIL_INTERPOSABLE, AVAIL_LOCAL, AVAIL_NOT_AVAILABLE, cgraph_node(), symtab_node::decl, DECL_ATTRIBUTES, DECL_DECLARED_INLINE_P, DECL_EXTERNAL, decl_replaceable_p(), dyn_cast(), symtab_node::externally_visible, symtab_node::get_comdat_group(), symtab_node::has_aliases_p(), symtab_node::ifunc_resolver, symtab_node::in_other_partition, inlined_to, local, lookup_attribute(), symtab_node::semantic_interposition, symtab_node::symtab_node(), symtab_node::transparent_alias, and ultimate_alias_target().
Referenced by add_detected_attribute(), add_detected_attribute_1(), call_for_symbol_and_aliases(), call_for_symbol_thunks_and_aliases(), determine_versionability(), dump(), function_and_variable_visibility(), generate_summary(), get_read_write_all_from_node(), ipa_devirt(), ipa_profile(), ipa_reduced_postorder(), ipa_tm_create_version(), ipa_tm_execute(), ipa_tm_mayenterirr_function(), make_local(), maybe_record_node(), ipa_icf::sem_function::merge(), non_local_p(), propagate_malloc(), propagate_nothrow(), propagate_pure_const(), read_write_all_from_decl(), ipa_icf::redirect_all_callers(), set_const_flag(), set_const_flag_1(), set_malloc_flag(), set_malloc_flag_1(), set_noreturn_flag(), set_noreturn_flag_1(), set_nothrow_flag(), set_nothrow_flag_1(), skip_function_for_local_pure_const(), tree_profiling(), and try_speculative_devirtualization().
bool cgraph_node::get_body | ( | void | ) |
Prepare function body. When doing LTO, read cgraph_node's body from disk if it is not already present. When some IPA transformations are scheduled, apply them.
References CDI_DOMINATORS, CDI_POST_DOMINATORS, clone_of, current_pass, symtab_node::decl, DECL_STRUCT_FUNCTION, dump_file, dump_file_name, dump_flags, execute_all_ipa_transforms(), free_dominance_info(), gcc_assert, get_untransformed_body(), inlined_to, ipa_transforms_to_apply, NULL, pop_cfun(), push_cfun(), cgraph_edge::rebuild_edges(), set_dump_file(), TODO_update_ssa_only_virtuals, and update_ssa().
Referenced by expand_simd_clones(), ipa_pta_execute(), ok_for_auto_simd_clone(), and simd_clone_create().
|
inlineinherited |
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().
|
inlineinherited |
References DECL_ASSEMBLER_NAME, TREE_CODE, and x_comdat_group.
Referenced by analyze_functions(), decl_comdat_group_id(), and dump_base().
|
static |
Try to find a call graph node for declaration DECL and if it does not exist or if it corresponds to an inline clone, create a new one.
References cgraph_node(), clone_of, clones, create(), symtab_node::decl, dump_file, symtab_node::dump_name(), get(), inlined_to, symtab_node::order, PARSING, and symtab.
Referenced by add_call_edges_for_seq(), add_new_function(), analyze_functions(), assemble_alias(), canonicalize_constructor_val(), cgraph_update_edges_for_call_stmt_node(), copy_bb(), create_alias(), create_omp_child_function(), create_target_clone(), decl_fini_priority_insert(), decl_init_priority_insert(), gcc::pass_manager::dump_passes(), execute_fixup_cfg(), expand_call_inline(), expand_omp_target(), expand_omp_taskreg(), finalize_function(), finalize_task_copyfn(), symtab_node::get_create(), gimple_get_virt_method_for_vtable(), ipa_impossible_devirt_target(), ipa_make_edge_direct_to_target(), ipa_tm_insert_gettmclone_call(), ipa_tm_insert_irr_call(), ipa_tm_transform_calls_redirect(), lower_emutls_function_body(), make_decl_one_only(), malloc_candidate_p(), malloc_candidate_p_1(), mark_address(), mark_decl_referenced(), mark_load(), maybe_record_nested_function(), symbol_table::process_same_body_aliases(), cgraph_edge::rebuild_edges(), record_eh_tables(), record_function_versions(), record_reference(), recursive_call_p(), redirect_to_unreachable(), set_decl_section_name(), set_decl_section_name(), simd_clone_adjust(), try_make_edge_direct_virtual_call(), ubsan_create_edge(), vect_recog_pow_pattern(), and walk_polymorphic_call_targets().
|
privateinherited |
References asm_name(), EXTRA, ggc_internal_cleared_alloc(), m_uid, and name().
Referenced by dump_asm_name(), and dump_name().
cgraph_edge * cgraph_node::get_edge | ( | gimple * | call_stmt | ) |
Return the callgraph edge representing the GIMPLE_CALL statement CALL_STMT.
References call_site_hash, cgraph_edge::call_stmt, callees, cgraph_add_edge_to_call_site_hash(), hash_table< Descriptor, Lazy, Allocator >::create_ggc(), cgraph_edge_hasher::hash(), indirect_calls, and cgraph_edge::next_callee.
Referenced by autofdo::afdo_indirect_call(), analyze_function_body(), cgraph_update_edges_for_call_stmt_node(), ipa_icf_gimple::func_checker::compare_gimple_call(), symbol_table::create_edge(), create_edge_including_clones(), delete_unreachable_blocks_update_callgraph(), cgraph_edge::first_speculative_call_target(), ipa_analyze_call_uses(), ipa_note_param_call(), ipa_profile_generate_summary(), ipa_tm_insert_gettmclone_call(), ipa_tm_transform_calls_redirect(), malloc_candidate_p_1(), record_argument_state(), cgraph_edge::set_call_stmt(), set_call_stmt_including_clones(), update_call_edge_frequencies(), update_call_stmt_hash_for_removing_direct_edge(), verify_node(), and verify_speculative_call().
priority_type cgraph_node::get_fini_priority | ( | void | ) |
Return the finalization priority.
References DEFAULT_INIT_PRIORITY, symbol_priority_map::fini, symtab_node::in_init_priority_hash, and symtab.
Referenced by decl_fini_priority_lookup(), dump(), lto_output_node(), and set_fini_priority().
|
static |
Return the cgraph node that has ASMNAME for its DECL_ASSEMBLER_NAME. Return NULL if there's no such node.
References cgraph_node(), dyn_cast(), symtab_node::get_for_asmname(), inlined_to, NULL, and symtab_node::symtab_node().
Referenced by autofdo::afdo_indirect_call(), and autofdo::function_instance::find_icall_target_map().
|
staticinherited |
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().
struct function * cgraph_node::get_fun | ( | ) | const |
Return the DECL_STRUCT_FUNCTION of the function.
References cgraph_node(), clone_of, symtab_node::decl, and DECL_STRUCT_FUNCTION.
|
inherited |
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().
|
inherited |
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().
|
inlineinherited |
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().
|
inline |
|
inherited |
Dump the type_name of the symbol.
References symtab_type_names, and type.
|
inlineinherited |
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().
bool cgraph_node::get_untransformed_body | ( | ) |
When doing LTO, read cgraph_node's body from disk if it is not already present. Also perform any necessary clone materializations.
References cgraph_node(), clone_of, lto_in_decl_state::compressed, symtab_node::decl, DECL_ARGUMENTS, DECL_ASSEMBLER_NAME, DECL_RESULT, DECL_STRUCT_FUNCTION, fatal_error(), lto_file_decl_data::file_name, gcc_assert, gimple_has_body_p(), IDENTIFIER_POINTER, input_location, symtab_node::lto_file_data, lto_free_function_in_decl_state_for_node(), lto_free_section_data(), lto_get_decl_name_mapping(), lto_get_function_in_decl_state(), lto_get_section_data(), lto_input_function_body(), LTO_section_function_body, lto_stats, materialize_clone(), symtab_node::name(), NULL, symtab_node::order, lto_file_decl_data::order_base, timevar_pop(), and timevar_push().
Referenced by duplicate_thunk_for_node(), expand(), expand_call_inline(), expand_thunk(), get_body(), ipa_icf::sem_function::init(), inline_call(), ipa_merge_profiles(), maybe_materialize_called_clones(), and ipa_param_adjustments::modify_call().
|
inherited |
Dump the visibility of the symbol.
References decl, and DECL_VISIBILITY.
|
inlineinherited |
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 |
Return true when callgraph node is a function with Gimple body defined in current unit. Functions can also be define externally or they can be thunks with no Gimple representation. Note that at WPA stage, the function body may not be present in memory.
References symtab_node::alias, symtab_node::definition, and thunk.
Referenced by can_strub_internally_p(), compute_strub_mode(), do_per_function_toporder(), expand_simd_clones(), symbol_table::first_function_with_gimple_body(), function_called_by_processed_nodes_p(), init_node_map(), initialize_node_lattices(), inline_small_functions(), ipa_add_new_function(), ipa_profile_write_summary(), ipa_prop_write_jump_functions(), ipa_pta_execute(), ipcp_cloning_candidate_p(), ipcp_decision_stage(), ipcp_propagate_stage(), symbol_table::next_function_with_gimple_body(), ok_for_auto_simd_clone(), propagate_constants_across_call(), propagate_constants_topo(), symbol_table::remove_unreachable_nodes(), simd_clone_create(), and strub_from_body_p().
|
static |
Return true if NODE has thunk.
References callers, cgraph_node(), and cgraph_edge::next_caller.
Referenced by ipa_icf::sem_function::merge(), and ipa_icf::redirect_all_callers().
|
inlineinherited |
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().
|
inherited |
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().
cgraph_function_version_info * cgraph_node::insert_new_function_version | ( | void | ) |
Insert a new cgraph_function_version_info node into cgraph_fnver_htab corresponding to cgraph_node NODE.
References cgraph_fnver_htab, hash_table< Descriptor, Lazy, Allocator >::create_ggc(), ggc_cleared_alloc(), NULL, and version_info_node.
Referenced by expand_target_clones(), and record_function_versions().
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().
|
static |
Return local info node for the compiled function.
References cgraph_node(), symtab_node::decl, gcc_assert, get(), NULL, TREE_CODE, and ultimate_alias_target().
Referenced by ipa_tm_diagnose_transaction(), and setup_incoming_promotions().
bool cgraph_node::local_p | ( | void | ) |
Return true when function can be marked local.
References call_for_symbol_thunks_and_aliases(), cgraph_edge::callee, callees, cgraph_node(), local_p(), non_local_p(), NULL, thunk, and ultimate_alias_target().
Referenced by function_and_variable_visibility(), local_p(), ipa_icf::sem_function::merge(), and symbol_table::remove_unreachable_nodes().
|
inherited |
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().
|
static |
Worker to bring NODE local.
References AVAIL_LOCAL, can_be_local_p(), cgraph_node(), symtab_node::decl, DECL_COMDAT, DECL_EXTERNAL, symtab_node::externally_visible, symtab_node::forced_by_abi, gcc_assert, gcc_checking_assert, get_availability(), local, symtab_node::make_decl_local(), NULL, symtab_node::resolution, symtab_node::set_comdat_group(), symtab_node::set_section(), and symtab_node::unique_name.
void cgraph_node::make_local | ( | void | ) |
Bring cgraph node local.
References call_for_symbol_thunks_and_aliases(), make_local(), and NULL.
Referenced by make_local().
void cgraph_node::mark_address_taken | ( | void | ) |
Likewise indicate that a node is having address taken.
References symtab_node::address_taken, callers, cfun, cgraph_node(), gcc_assert, inlined_to, and ultimate_alias_target().
Referenced by ipa_tm_insert_gettmclone_call(), cgraph_edge::make_speculative(), mark_address(), mark_load(), record_eh_tables(), and record_reference().
|
inline |
Likewise indicate that a node is needed, i.e. reachable via some external means.
References symtab_node::force_output, gcc_checking_assert, and inlined_to.
Referenced by input_offload_tables(), ipa_tm_mark_force_output_node(), mark_decl_referenced(), and process_function_and_variable_attributes().
void cgraph_node::materialize_clone | ( | void | ) |
Given virtual clone, turn it into actual clone.
References symtab_node::analyzed, cgraph_node(), symtab_node::clear_stmts_in_references(), clone_of, clones, symtab_node::decl, ipa_param_adjustments::dump(), dump_flags, dump_function_to_file(), symtab_node::dump_name(), former_clone_of, clone_info::get(), i, ipa_replace_map::new_tree, NULL, clone_info::param_adjustments, ipa_replace_map::parm_num, print_generic_expr(), release_body(), remove_from_clone_tree(), symtab, tree_function_versioning(), clone_info::tree_map, and vec_safe_length().
Referenced by execute_all_ipa_transforms(), get_untransformed_body(), and inline_transform().
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().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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().
|
inlineinherited |
Return next reachable static symbol with initializer after the node.
References definition, next, NULL, and symtab_node().
|
staticprivateinherited |
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().
|
inherited |
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().
|
inherited |
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().
|
inlineinherited |
References ref_list.
Referenced by ipa_icf::sem_function::equals_wpa(), ipa_icf::sem_variable::equals_wpa(), and set_writeonly_bit().
|
inline |
Return true when function is only called directly or it has alias. i.e. it is not externally visible, address was not taken and it is not used in any other non-standard way.
References symtab_node::address_taken, symtab_node::decl, DECL_STATIC_CONSTRUCTOR, DECL_STATIC_DESTRUCTOR, DECL_VIRTUAL_P, symtab_node::externally_visible, symtab_node::force_output, gcc_assert, symtab_node::ifunc_resolver, inlined_to, symtab_node::used_from_object_file_p(), and symtab_node::used_from_other_partition.
Referenced by cgraph_not_only_called_directly_p_1(), and non_local_p().
bool cgraph_node::only_called_directly_p | ( | void | ) |
Return true when function cgraph_node and all its aliases are only called directly. i.e. it is not externally visible, address was not taken and it is not used in any other non-standard way.
References call_for_symbol_and_aliases(), cgraph_not_only_called_directly_p_1(), gcc_assert, NULL, and ultimate_alias_target().
Referenced by compute_strub_mode(), dump(), gimple_gen_ic_func_profiler(), ipa_reverse_postorder(), and will_be_removed_from_program_if_no_direct_calls_p().
|
inline |
Return true if function should be optimized for size.
References count, symtab_node::decl, frequency, NODE_FREQUENCY_UNLIKELY_EXECUTED, opt_for_fn, OPTIMIZE_SIZE_BALANCED, OPTIMIZE_SIZE_MAX, OPTIMIZE_SIZE_NO, and profile_count::zero().
Referenced by good_cloning_opportunity_p(), ipcp_cloning_candidate_p(), and optimize_function_for_size_p().
|
inherited |
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().
|
inlineinherited |
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().
|
protectedinherited |
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().
|
inlineinherited |
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().
Record that DECL1 and DECL2 are semantically identical function versions.
References cgraph_node(), function_version(), gcc_assert, get_create(), insert_new_function_version(), cgraph_function_version_info::next, NULL, and cgraph_function_version_info::prev.
void cgraph_node::record_stmt_references | ( | gimple * | stmt | ) |
Record all references from cgraph_node that are taken in statement STMT.
References mark_address(), mark_load(), mark_store(), and walk_stmt_load_store_addr_ops().
Referenced by ipa_param_adjustments::modify_call(), cgraph_edge::rebuild_edges(), and cgraph_edge::rebuild_references().
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().
|
inherited |
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().
Release memory used to represent body of function. Use this only for functions that are released before being translated to target code (i.e. RTL). Functions that are compiled to RTL and beyond are free'd in final.cc via free_after_compilation(). KEEP_ARGUMENTS are useful only if you want to rebuild body as thunk.
References cgraph_node(), clones, symtab_node::decl, DECL_ARGUMENTS, DECL_INITIAL, DECL_RESULT, error_mark_node, gcc_assert, ipa_transforms_to_apply, symtab_node::lto_file_data, lto_free_function_in_decl_state_for_node(), NULL, PARSING, release_function_body(), symtab_node::remove_all_references(), remove_callees(), symtab, and used_as_abstract_origin.
Referenced by create_wrapper(), execute_one_pass(), expand(), expand_all_functions(), ipa_merge_profiles(), materialize_clone(), ipa_icf::sem_function::merge(), remove(), and symbol_table::remove_unreachable_nodes().
void cgraph_node::remove | ( | void | ) |
Remove function from symbol table.
References symtab_node::analyzed, symtab_node::asm_name(), call_site_hash, cgraph_node(), clone_of, clones, symtab_node::decl, DECL_EXTERNAL, DECL_SOURCE_COLUMN, DECL_SOURCE_FILE, DECL_SOURCE_LINE, delete_function_version(), symtab_node::force_output, symtab_node::forced_by_abi, function_version(), get(), clone_info::get(), symtab_node::in_other_partition, inlined_to, ipa_transforms_to_apply, symtab_node::lto_file_data, lto_free_function_in_decl_state_for_node(), LTO_STREAMING, symtab_node::next, next_sibling_clone, NULL, symtab_node::order, prev_sibling_clone, release_body(), remove_callees(), remove_callers(), symtab, TREE_ASM_WRITTEN, and symtab_node::unregister().
Referenced by delete_function_version_by_decl(), gcc::pass_manager::dump_passes(), expand_call_inline(), recursive_inlining(), ipa_icf::redirect_all_callers(), remove_symbol_and_inline_clones(), and symbol_table::remove_unreachable_nodes().
|
inherited |
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().
|
inherited |
void cgraph_node::remove_callees | ( | void | ) |
Remove all callees from the node.
References call_site_hash, callees, calls_comdat_local, indirect_calls, cgraph_edge::indirect_unknown_callee, cgraph_edge::next_callee, NULL, cgraph_edge::remove_callee(), and symtab.
Referenced by cgraph_edge::rebuild_edges(), release_body(), remove(), symbol_table::remove_unreachable_nodes(), and split_function().
void cgraph_node::remove_callers | ( | void | ) |
Remove all callers from the node.
References callers, cgraph_edge::next_caller, NULL, cgraph_edge::remove_caller(), and symtab.
Referenced by remove().
void cgraph_node::remove_from_clone_tree | ( | ) |
Remove the node from the tree of virtual and inline clones and make it a standalone node - not a clone any more.
References clone_of, next_sibling_clone, NULL, and prev_sibling_clone.
Referenced by materialize_clone(), and symbol_table::remove_unreachable_nodes().
|
inherited |
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().
|
inherited |
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().
bool cgraph_node::remove_symbol_and_inline_clones | ( | cgraph_node * | forbidden_node = NULL | ) |
Remove the node from cgraph and all inline clones inlined into it. Skip however removal of FORBIDDEN_NODE and return true if it needs to be removed. This allows to call the function from outer loop walking clone tree.
References cgraph_edge::callee, callees, callers, cgraph_node(), cgraph_edge::inline_failed, symtab_node::next, cgraph_edge::next_callee, cgraph_edge::remove(), remove(), and remove_symbol_and_inline_clones().
Referenced by cgraph_update_edges_for_call_stmt_node(), delete_unreachable_blocks_update_callgraph(), redirect_to_unreachable(), remove_symbol_and_inline_clones(), cgraph_edge::resolve_speculation(), and save_inline_function_body().
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().
|
inherited |
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().
|
static |
Return RTL info for the compiled function.
References AVAIL_AVAILABLE, cgraph_node(), current_function_decl, symtab_node::decl, cgraph_rtl_info::function_used_regs, gcc_assert, get(), ggc_cleared_alloc(), NULL, rtl, SET_HARD_REG_SET, TREE_ASM_WRITTEN, TREE_CODE, and ultimate_alias_target().
Referenced by collect_fn_hard_reg_usage(), expand_call(), fndecl_abi(), and rest_of_clean_state().
|
inherited |
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().
void cgraph_node::set_call_stmt_including_clones | ( | gimple * | old_stmt, |
gcall * | new_stmt, | ||
bool | update_speculative = true ) |
Like cgraph_set_call_stmt but walk the clone tree and update all clones sharing the same function body. When WHOLE_SPECULATIVE_EDGES is true, all three components of speculative edge gets updated. Otherwise we update only direct call.
References cgraph_node(), clone_of, clones, get_edge(), symtab_node::next, next_sibling_clone, cgraph_edge::set_call_stmt(), and cgraph_edge::speculative.
Referenced by cgraph_edge::redirect_call_stmt_to_callee().
|
inlineinherited |
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().
If SET_CONST is true, mark function, aliases and thunks to be ECF_CONST. If SET_CONST if false, clear the flag. When setting the flag be careful about possible interposition and do not set the flag for functions that can be interposed and set pure flag for functions that can bind to other definition. Return true if any change was done.
References symtab_node::alias, AVAIL_INTERPOSABLE, cgraph_node(), changed, dyn_cast(), FOR_EACH_ALIAS, get_availability(), ipa_ref::referring, and set_const_flag_1().
Referenced by ipa_make_function_const(), and tree_profiling().
void cgraph_node::set_fini_priority | ( | priority_type | priority | ) |
Set finalization priority to PRIORITY.
References symtab_node::decl, DECL_STATIC_DESTRUCTOR, DEFAULT_INIT_PRIORITY, symbol_priority_map::fini, gcc_assert, get_fini_priority(), and symtab_node::priority_info().
Referenced by decl_fini_priority_insert(), and input_node().
|
staticprivateinherited |
Worker for symtab_resolve_alias.
References implicit_section, and symtab_node().
Referenced by resolve_alias().
|
inherited |
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().
Set DECL_IS_MALLOC on NODE's decl and on NODE's aliases if any.
References symtab_node::alias, AVAIL_INTERPOSABLE, cgraph_node(), changed, dyn_cast(), FOR_EACH_ALIAS, get_availability(), ipa_ref::referring, and set_malloc_flag_1().
Referenced by propagate_malloc().
Set TREE_THIS_VOLATILE on NODE's decl and on NODE's aliases if any.
References symtab_node::alias, AVAIL_INTERPOSABLE, cgraph_node(), changed, dyn_cast(), FOR_EACH_ALIAS, get_availability(), ipa_ref::referring, and set_noreturn_flag_1().
Set TREE_NOTHROW on NODE's decl and on aliases of NODE if any to NOTHROW.
References symtab_node::alias, AVAIL_INTERPOSABLE, cgraph_node(), changed, symtab_node::decl, dyn_cast(), FOR_EACH_ALIAS, get_availability(), opt_for_fn, ipa_ref::referring, and set_nothrow_flag_1().
Referenced by propagate_nothrow(), and set_nothrow_function_flags().
Set DECL_PURE_P on cgraph_node's decl and on aliases of the node if any to PURE. When setting the flag, be careful about possible interposition. Return true if any change was done.
References call_for_symbol_thunks_and_aliases(), cgraph_node(), set_pure_flag_info::changed, NULL, set_pure_flag_1(), and simd_clones.
Referenced by ipa_make_function_pure(), and tree_profiling().
|
inherited |
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().
|
inherited |
References call_for_symbol_and_aliases(), set_section_from_node(), and symtab_node().
|
inherited |
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().
|
inherited |
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.
|
staticprivateinherited |
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().
|
staticprivateinherited |
Workers for set_section.
References set_section_for_node(), and symtab_node().
Referenced by set_section().
|
inline |
Given function symbol, walk the alias chain to return the function node is alias of. Do not walk through thunks. 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 AVAIL_NOT_AVAILABLE, cgraph_node(), dyn_cast(), symtab_node::symtab_node(), and symtab_node::ultimate_alias_target().
Referenced by ipa_icf::sem_item_optimizer::build_graph(), caller_growth_limits(), can_early_inline_edge_p(), can_inline_edge_by_limits_p(), can_inline_edge_p(), can_remove_if_no_direct_calls_p(), clone_of_p(), collect_callers_of_node_1(), dump(), duplicate_thunk_for_node(), early_inline_small_functions(), evaluate_properties_for_edge(), flatten_function(), function_or_virtual_thunk_symbol(), function_symbol(), get_availability(), get_modref_function_summary(), inline_always_inline_functions(), inline_call(), inline_small_functions(), inline_to_all_callers_1(), ipa_compute_jump_functions_for_bb(), ipa_return_value_range(), local_info_node(), local_p(), lookup_recursive_calls(), mark_address_taken(), maybe_record_node(), only_called_directly_p(), recursive_call_p(), recursive_inlining(), report_inline_failed_reason(), rtl_info(), set_strub_mode(), set_strub_mode_to(), speculation_useful_p(), unlikely_executed_stmt_p(), update_callee_keys(), cgraph_edge::verify_corresponds_to_fndecl(), want_early_inline_function_p(), want_inline_small_function_p(), and will_be_removed_from_program_if_no_direct_calls_p().
|
privateinherited |
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().
|
protectedinherited |
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().
|
inlineinherited |
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().
|
inherited |
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().
|
protectedinherited |
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 whole cgraph structure.
References cgraph_node(), FOR_EACH_FUNCTION, seen_error(), and symtab_node::verify().
Referenced by checking_verify_cgraph_nodes().
DEBUG_FUNCTION void cgraph_node::verify_node | ( | void | ) |
Verify cgraph nodes of given cgraph node.
References hash_set< KeyId, Lazy, Traits >::add(), symtab_node::address_taken, symtab_node::alias, symtab_node::analyzed, cgraph_edge::aux, cgraph_edge::call_stmt, cgraph_edge::callee, callees, cgraph_edge::caller, callers, calls_comdat_local, function::cfg, cgraph_debug_gimple_stmt(), cgraph_node(), check_calls_comdat_local_p(), clone_of, clones, symtab_node::comdat_local_p(), profile_count::compatible_p(), hash_set< KeyId, Lazy, Traits >::contains(), basic_block_def::count, cgraph_edge::count, count, function::curr_properties, profile_count::debug(), debug_tree(), symtab_node::decl, DECL_EXTERNAL, DECL_IS_MALLOC, DECL_STRUCT_FUNCTION, symtab_node::definition, profile_count::differs_from_p(), dump(), profile_count::dump(), ENTRY_BLOCK_PTR_FOR_FN, error(), error_found, symtab_node::externally_visible, fndecl_built_in_p(), FOR_EACH_BB_FN, symtab_node::force_output, gcc_unreachable, nested_function_info::get(), get_edge(), gimple_bb(), gimple_call_fndecl(), gimple_has_body_p(), gsi_end_p(), gsi_next(), gsi_start_bb(), gsi_start_phis(), gsi_stmt(), i, identifier_to_locale(), symtab_node::in_other_partition, symtab_node::in_same_comdat_group_p(), indirect_calls, cgraph_edge::indirect_info, cgraph_edge::indirect_unknown_callee, cgraph_edge::inline_failed, inlined_to, internal_error(), profile_count::ipa_p(), IPA_REF_ALIAS, is_gimple_call(), symtab_node::iterate_reference(), local, cgraph_edge::lto_stmt_uid, ipa_ref::lto_stmt_uid, LTO_STREAMING, symtab_node::name(), cgraph_edge::next_callee, cgraph_edge::next_caller, next_nested_function(), next_sibling_clone, profile_count::nonzero_p(), NULL, opt_for_fn, nested_function_info::origin, POINTER_TYPE_P, prev_sibling_clone, PROP_assumptions_done, symtab_node::same_comdat_group, seen_error(), symtab_node::semantic_interposition, cgraph_edge::speculative, ipa_ref::speculative, ipa_ref::stmt, symtab, thunk, timevar_pop(), timevar_push(), tp_first_run, TREE_ASM_WRITTEN, TREE_TYPE, ipa_ref::use, symtab_node::verify_base(), cgraph_edge::verify_corresponds_to_fndecl(), cgraph_edge::verify_count(), and verify_speculative_call().
|
staticinherited |
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().
Return true when function cgraph_node can be expected to be removed from program when direct calls in this compilation unit are removed. As a special case COMDAT functions are cgraph_can_remove_if_no_direct_calls_p while the are not cgraph_only_called_directly_p (it is possible they are called from other unit) This function behaves as cgraph_only_called_directly_p because eliminating all uses of COMDAT function does not make it necessarily disappear from the program unless we are compiling whole program or we do LTO. In this case we know we win since dynamic linking will not really discard the linkonce section.
References symtab_node::address_taken, can_remove_if_no_direct_calls_p(), cgraph_node(), symtab_node::decl, DECL_EXTERNAL, dyn_cast(), symtab_node::externally_visible, gcc_assert, symtab_node::get_comdat_group(), inlined_to, symtab_node::next, only_called_directly_p(), symtab_node::same_comdat_group, and ultimate_alias_target().
Referenced by offline_size().
|
friend |
References symbol_table.
Referenced by symbol_table.
|
inherited |
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().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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().
hash_table<cgraph_edge_hasher>* cgraph_node::call_site_hash |
unsigned cgraph_node::called_by_ifunc_resolver |
Referenced by symtab_node::check_ifunc_callee_symtab_nodes(), and gimple_gen_ic_func_profiler().
cgraph_edge* cgraph_node::callees |
Referenced by analyze(), analyze_functions(), ipa_icf::sem_item_optimizer::build_graph(), calls_builtin_apply_args_p(), calls_builtin_va_start_p(), can_early_inline_edge_p(), can_strub_internally_p(), cgraph_node(), check_calls_comdat_local_p(), check_speculations_1(), clone_inlined_nodes(), clone_of_p(), compute_fn_summary(), compute_ltrans_boundary(), contains_hot_call_p(), create_clone(), create_edge(), create_version_clone(), create_wrapper(), determine_versionability(), drop_profile(), dump(), dump_graphviz(), dump_inline_stats(), dump_ipa_call_summary(), dump_modref_edge_summaries(), dump_profile_updates(), ipa_fn_summary_t::duplicate(), duplicate_thunk_for_node(), early_inline_small_functions(), early_inliner(), estimate_calls_size_and_time(), estimate_calls_size_and_time_1(), expand_thunk(), cgraph_edge::first_speculative_call_target(), fixup_call_stmt_edges_1(), flatten_function(), function_and_variable_visibility(), function_or_virtual_thunk_symbol(), function_symbol(), get_edge(), get_read_write_all_from_node(), handle_missing_profiles(), inline_always_inline_functions(), inline_analyze_function(), inline_call(), inline_read_section(), inline_small_functions(), inline_transform(), inline_update_callee_summaries(), input_node_opt_summary(), ipa_analyze_node(), ipa_fn_summary_write(), ipa_inline(), ipa_merge_profiles(), ipa_print_node_jump_functions(), ipa_profile(), ipa_read_node_info(), ipa_tm_diagnose_tm_safe(), ipa_tm_transform_clone(), ipa_update_overall_fn_summary(), ipa_write_node_info(), ipcp_propagate_stage(), local_p(), localize_profile(), lookup_recursive_calls(), mark_all_inlined_calls_cdtor(), maybe_materialize_called_clones(), merge_profile_summaries(), num_calls(), output_node_opt_summary(), output_symtab(), propagate_bits(), propagate_constants_topo(), propagate_info_to_inlined_callees(), propagate_malloc(), propagate_nothrow(), propagate_pure_const(), read_thunk_profile(), recursive_inlining(), redirect_to_specific_clone(), remap_edge_summaries(), remove_callees(), ipa_fn_summary_t::remove_callees(), remove_modref_edge_summaries(), remove_symbol_and_inline_clones(), reset_edge_caches(), scale_ipa_profile_for_fn(), searchc(), self_recursive_p(), spread_undeadness(), summarize_calls_size_and_time(), ipa_icf::symbol_compare_collection::symbol_compare_collection(), tree_function_versioning(), update_callee_keys(), update_counts_for_self_gen_clones(), update_inlined_to_pointer(), update_noncloned_counts(), update_profiling_info(), update_specialized_profile(), verify_node(), verify_speculative_call(), and verify_strub().
cgraph_edge* cgraph_node::callers |
Referenced by add_detected_attribute_1(), symtab_node::add_to_same_comdat_group(), adjust_clone_incoming_counts(), adjust_refs_in_act_callers(), analyze_clone_icoming_counts(), assemble_thunks_and_aliases(), call_for_symbol_thunks_and_aliases(), called_directly_with_type_override_p(), caller_growth_limits(), can_remove_node_now_p_1(), cgraph_node(), check_callers(), check_callers(), clone_inlined_nodes(), collect_callers_of_node_1(), count_callers(), create_dispatcher_calls(), create_edge(), create_specialized_node(), decide_whether_version_node(), distinctify_node_type(), do_estimate_growth_1(), dump(), duplicate_thunk_for_node(), execute_split_functions(), expand_all_artificial_thunks(), function_and_variable_visibility(), gather_caller_stats(), gather_count_of_non_rec_edges(), get_info_about_necessary_edges(), growth_positive_p(), handle_missing_profiles(), has_caller_p(), has_thunk_p(), has_undead_caller_from_outside_scc_p(), inline_small_functions(), inline_to_all_callers(), inline_to_all_callers_1(), ipa_get_stack_frame_offset(), ipa_merge_modref_summary_after_inlining(), ipa_propagate_frequency_1(), ipa_reverse_postorder(), ipa_tm_execute(), ipa_tm_note_irrevocable(), is_caller_ifunc_resolver(), mark_address_taken(), ok_for_auto_simd_clone(), symtab_node::output_to_lto_symbol_table_p(), propagate_comdat_group(), propagate_controlled_uses(), reachable_from_other_partition_p(), reachable_from_this_partition_p(), recursive_inlining(), ipa_icf::redirect_all_callers(), symtab_node::referred_to_p(), remove_callers(), remove_symbol_and_inline_clones(), symbol_table::remove_unreachable_nodes(), reset_edge_caches(), save_inline_function_body(), cgraph_edge::set_callee(), set_const_flag_1(), set_malloc_flag_1(), set_noreturn_flag_1(), set_nothrow_flag_1(), set_nothrow_function_flags(), set_single_call_flag(), sum_callers(), update_call_expr(), update_callee_keys(), update_caller_keys(), verify_node(), and want_inline_self_recursive_call_p().
unsigned cgraph_node::calls_comdat_local |
unsigned cgraph_node::can_change_signature |
cgraph_node* cgraph_node::clone_of |
Referenced by add_node_to(), cgraph_node(), cgraph_update_edges_for_call_stmt(), cgraph_update_edges_for_call_stmt_node(), clone_of_p(), create_clone(), create_edge_including_clones(), delete_unreachable_blocks_update_callgraph(), do_per_function(), dump(), find_replacement(), fixup_call_stmt_edges(), gather_count_of_non_rec_edges(), get_body(), get_create(), get_fun(), get_untransformed_body(), input_overwrite_node(), ipa_pta_execute(), lto_output_node(), master_clone_with_noninline_clones_p(), materialize_clone(), maybe_materialize_called_clones(), ipa_param_adjustments::modify_call(), output_cgraph_opt_summary_p(), cgraph_edge::redirect_call_stmt_to_callee(), remove(), remove_from_clone_tree(), symbol_table::remove_unreachable_nodes(), save_inline_function_body(), set_call_stmt_including_clones(), tree_profiling(), and verify_node().
cgraph_node* cgraph_node::clones |
Referenced by cgraph_node(), cgraph_update_edges_for_call_stmt(), symtab_node::clear_stmts_in_references(), create_clone(), create_edge_including_clones(), delete_unreachable_blocks_update_callgraph(), execute_all_ipa_transforms(), find_replacement(), fixup_call_stmt_edges(), get_create(), inline_transform(), symbol_table::insert_to_assembler_name_hash(), mark_functions_to_output(), master_clone_with_noninline_clones_p(), materialize_clone(), preserve_function_body_p(), record_argument_state(), release_body(), remove(), symbol_table::remove_unreachable_nodes(), save_inline_function_body(), set_call_stmt_including_clones(), symbol_table::unlink_from_assembler_name_hash(), update_clone_info(), and verify_node().
profile_count cgraph_node::count |
Referenced by autofdo::afdo_annotate_cfg(), analyze(), cgraph_node(), clone_inlined_nodes(), create_clone(), create_edge(), create_edge_including_clones(), create_indirect_edge(), create_version_clone(), create_virtual_clone(), create_wrapper(), decide_about_value(), determine_unlikely_bbs(), do_estimate_edge_time(), drop_profile(), dump(), dump_overall_stats(), dump_profile_updates(), duplicate_thunk_for_node(), edge_badness(), execute_fixup_cfg(), expand_thunk(), handle_missing_profiles(), inline_small_functions(), inline_transform(), input_node(), ipa_merge_profiles(), ipa_profile(), ipa_propagate_frequency(), ipcp_cloning_candidate_p(), ipcp_propagate_stage(), lenient_count_portion_handling(), localize_profile(), lto_output_node(), cgraph_edge::maybe_hot_p(), merge_profile_summaries(), optimize_for_size_p(), read_thunk_profile(), cgraph_edge::rebuild_edges(), recursive_inlining(), scale_ipa_profile_for_fn(), tree_function_versioning(), update_counts_for_self_gen_clones(), update_noncloned_counts(), update_profiling_info(), update_specialized_profile(), and verify_node().
int cgraph_node::count_materialization_scale |
Referenced by cgraph_node(), input_function(), input_node(), lto_output_node(), and merge_profile_summaries().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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 cgraph_node::dispatcher_function |
Referenced by analyze(), and analyze_functions().
|
inherited |
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().
|
inherited |
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().
|
inherited |
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().
tree cgraph_node::former_clone_of |
enum node_frequency cgraph_node::frequency |
Referenced by computation_cost(), compute_function_frequency(), create_clone(), decide_function_section(), drop_profile(), dump(), dump_function_header(), execute_split_functions(), function_section_1(), inline_account_function_p(), input_overwrite_node(), ipa_merge_profiles(), ipa_propagate_frequency(), likely_target_p(), lto_output_node(), maybe_hot_count_p(), optimize_for_size_p(), and unlikely_executed_stmt_p().
unsigned cgraph_node::gc_candidate |
Referenced by expand_all_functions(), simd_clone_create(), and vectorizable_simd_clone_call().
unsigned cgraph_node::has_omp_variant_constructs |
unsigned cgraph_node::icf_merged |
Referenced by create_clone(), dump(), input_overwrite_node(), lto_output_node(), and ipa_icf::sem_function::merge().
|
inherited |
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().
|
inherited |
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().
|
inherited |
Referenced by cgraph_node::get_fini_priority(), get_init_priority(), priority_info(), symtab_node(), and unregister().
|
inherited |
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().
unsigned cgraph_node::indirect_call_target |
cgraph_edge* cgraph_node::indirect_calls |
Referenced by analyze_functions(), can_early_inline_edge_p(), cgraph_node(), compute_fn_summary(), compute_ltrans_boundary(), contains_hot_call_p(), create_clone(), create_indirect_edge(), create_version_clone(), devirtualization_time_bonus(), drop_profile(), dump(), dump_inline_stats(), dump_ipa_call_summary(), dump_modref_edge_summaries(), ipa_fn_summary_t::duplicate(), estimate_calls_size_and_time(), estimate_calls_size_and_time_1(), fixup_call_stmt_edges_1(), get_edge(), get_read_write_all_from_node(), initialize_node_lattices(), inline_analyze_function(), inline_read_section(), inline_update_callee_summaries(), input_node_opt_summary(), ipa_analyze_node(), ipa_devirt(), ipa_fn_summary_write(), ipa_inline(), ipa_merge_profiles(), ipa_print_node_jump_functions(), ipa_profile(), ipa_profile_dump_all_summaries(), ipa_profile_read_summary_section(), ipa_profile_write_summary(), ipa_read_node_info(), ipa_tm_transform_clone(), ipa_update_overall_fn_summary(), ipa_write_node_info(), ipcp_discover_new_direct_edges(), localize_profile(), mark_all_inlined_calls_cdtor(), merge_profile_summaries(), output_node_opt_summary(), output_symtab(), propagate_info_to_inlined_callees(), propagate_malloc(), propagate_nothrow(), propagate_pure_const(), remap_edge_summaries(), remove_callees(), ipa_fn_summary_t::remove_callees(), remove_modref_edge_summaries(), scale_ipa_profile_for_fn(), summarize_calls_size_and_time(), tree_function_versioning(), update_indirect_edges_after_inlining(), update_noncloned_counts(), update_profiling_info(), verify_node(), verify_speculative_call(), and verify_strub().
cgraph_node* cgraph_node::inlined_to |
Referenced by add_node_to(), assemble_thunks_and_aliases(), associate_varinfo_to_alias(), big_speedup_p(), symtab_node::binds_to_current_def_p(), caller_growth_limits(), can_early_inline_edge_p(), can_inline_edge_by_limits_p(), can_inline_edge_p(), can_refer_decl_in_current_unit_p(), can_remove_if_no_direct_calls_and_refs_p(), cgraph_node(), check_callers(), clone_inlined_nodes(), symbol_table::compile(), compute_fn_summary(), compute_ltrans_boundary(), create_clone(), create_version_clone(), dump(), dump_overall_stats(), ipa_fn_summary_t::duplicate(), ipcp_transformation_t::duplicate(), evaluate_properties_for_edge(), execute_one_pass(), expand(), expand_simd_clones(), flatten_function(), function_and_variable_visibility(), function_called_by_processed_nodes_p(), get_availability(), get_body(), get_create(), get_for_asmname(), symtab_node::get_partitioning_class(), inline_call(), inline_small_functions(), inline_to_all_callers_1(), input_node(), ipa_dump_fn_summaries(), ipa_duplicate_jump_function(), ipa_get_stack_frame_offset(), ipa_inline(), ipa_make_edge_direct_to_target(), ipa_merge_modref_summary_after_inlining(), ipa_pta_execute(), ipa_reverse_postorder(), ipa_value_range_from_jfunc(), lto_output_node(), mark_address_taken(), mark_force_output(), mark_functions_to_output(), maybe_record_node(), only_called_directly_or_aliased_p(), output_symtab(), propagate(), propagate_controlled_uses(), propagate_malloc(), propagate_nothrow(), propagate_pure_const(), propagate_single_user(), reachable_from_other_partition_p(), symtab_node::real_symbol_p(), cgraph_edge::rebuild_edges(), recursive_inlining(), remove(), symbol_table::remove_unreachable_nodes(), reset_edge_caches(), resolve_noninline_speculation(), update_caller_keys(), update_indirect_edges_after_inlining(), update_inlined_to_pointer(), verify_node(), walk_polymorphic_call_targets(), want_inline_function_to_all_callers_p(), want_inline_self_recursive_call_p(), want_inline_small_function_p(), will_be_removed_from_program_if_no_direct_calls_p(), and write_node_summary_p().
vec<ipa_opt_pass, va_heap, vl_ptr> cgraph_node::ipa_transforms_to_apply |
unsigned cgraph_node::ipcp_clone |
Referenced by create_specialized_node(), create_virtual_clone(), and propagate_controlled_uses().
unsigned cgraph_node::local |
Referenced by add_new_function(), analyze_function(), create_clone(), create_version_clone(), create_version_clone_with_body(), dump(), execute_split_functions(), expand_target_clones(), function_and_variable_visibility(), get_availability(), identify_dead_nodes(), init_node_map(), initialize_node_lattices(), input_overwrite_node(), ipa_profile(), ipa_propagate_frequency(), ipa_tm_create_version(), ipa_tm_execute(), lto_output_node(), make_local(), symbol_table::remove_unreachable_nodes(), ipa_icf::set_local(), set_new_clone_decl_and_node_flags(), set_single_call_flag(), setup_incoming_promotions(), simd_clone_create(), speculation_useful_p(), update_profiling_info(), and verify_node().
unsigned cgraph_node::lowered |
|
inherited |
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 symbol_table::assign_summary_id(), get_summary_id(), and symbol_table::release_symbol().
|
privateinherited |
Referenced by get_dump_name(), get_uid(), and symtab_node().
unsigned cgraph_node::merged_comdat |
unsigned cgraph_node::merged_extern_inline |
|
inherited |
|
inherited |
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().
|
inherited |
cgraph_node* cgraph_node::next_sibling_clone |
Referenced by cgraph_node(), cgraph_update_edges_for_call_stmt(), symtab_node::clear_stmts_in_references(), create_clone(), create_edge_including_clones(), delete_unreachable_blocks_update_callgraph(), execute_all_ipa_transforms(), find_replacement(), fixup_call_stmt_edges(), inline_transform(), symbol_table::insert_to_assembler_name_hash(), master_clone_with_noninline_clones_p(), preserve_function_body_p(), record_argument_state(), remove(), remove_from_clone_tree(), symbol_table::remove_unreachable_nodes(), save_inline_function_body(), set_call_stmt_including_clones(), symbol_table::unlink_from_assembler_name_hash(), and verify_node().
|
inherited |
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 cgraph_node::nonfreeing_fn |
Referenced by dump(), input_overwrite_node(), lto_output_node(), nonfreeing_call_p(), and propagate_pure_const().
|
inherited |
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().
unsigned cgraph_node::only_called_at_exit |
unsigned cgraph_node::only_called_at_startup |
|
inherited |
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().
unsigned cgraph_node::parallelized_function |
cgraph_node* cgraph_node::prev_sibling_clone |
|
inherited |
Referenced by symbol_table::register_symbol(), and symbol_table::unregister().
|
inherited |
unsigned cgraph_node::process |
unsigned int cgraph_node::profile_id |
unsigned cgraph_node::redefined_extern_inline |
|
inherited |
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().
|
inherited |
Referenced by equal_address_to(), mark_weak(), nonzero_address(), and symtab_node().
|
inherited |
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().
struct cgraph_rtl_info* cgraph_node::rtl |
Referenced by cgraph_node(), create_clone(), create_version_clone(), and rtl_info().
|
inherited |
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().
|
inherited |
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().
cgraph_node* cgraph_node::simd_clones |
cgraph_simd_clone* cgraph_node::simdclone |
Referenced by cgraph_node(), expand_simd_clones(), ipa_simd_modify_function_body(), omp_complete_construct_context(), symbol_table::remove_unreachable_nodes(), simd_clone_adjust(), simd_clone_adjust_argument_types(), simd_clone_adjust_return_type(), simd_clone_init_simd_arrays(), simd_clone_linear_addend(), simd_clone_mangle(), and vectorizable_simd_clone_call().
unsigned cgraph_node::split_part |
Referenced by create_clone(), dump(), edge_badness(), input_overwrite_node(), lto_output_node(), and split_function().
|
inherited |
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 cgraph_node::thunk |
Referenced by analyze(), analyze_function(), analyze_functions(), assemble_thunks_and_aliases(), associate_varinfo_to_alias(), call_for_symbol_thunks_and_aliases(), call_passes_through_thunk(), clone_of_p(), collect_callers_of_node_1(), compute_fn_summary(), compute_ltrans_boundary(), create_clone(), symbol_table::create_edge(), create_edge_including_clones(), create_nesting_tree(), create_thunk(), create_wrapper(), determine_versionability(), dump(), duplicate_thunk_for_node(), ipa_icf::sem_function::equals_wpa(), evaluate_properties_for_edge(), expand_all_artificial_thunks(), expand_thunk(), fixup_call_stmt_edges(), former_thunk_p(), function_and_variable_visibility(), function_or_virtual_thunk_symbol(), function_symbol(), gather_caller_stats(), gimplify_all_functions(), has_gimple_body_p(), has_undead_caller_from_outside_scc_p(), ipa_icf::sem_function::init(), init_node_map(), initialize_node_lattices(), inline_analyze_function(), inline_call(), inline_small_functions(), input_overwrite_node(), ipa_comdats(), ipa_merge_profiles(), ipa_reverse_postorder(), local_p(), lto_output_node(), mark_functions_to_output(), non_local_p(), output_in_order(), output_symtab(), preserve_function_body_p(), ipa_icf::redirect_all_callers(), cgraph_edge::redirect_callee_duplicating_thunks(), symbol_table::remove_unreachable_nodes(), save_inline_function_body(), set_nothrow_flag_1(), set_single_call_flag(), tree_profiling(), and verify_node().
unsigned cgraph_node::tm_clone |
unsigned cgraph_node::tm_may_enter_irr |
int cgraph_node::tp_first_run |
|
inherited |
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().
|
inherited |
Referenced by dump_base(), get_symtab_type_string(), propagate_comdat_group(), symtab_node(), and verify_base().
|
inherited |
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().
int cgraph_node::unit_id |
unsigned cgraph_node::used_as_abstract_origin |
|
inherited |
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 cgraph_node::versionable |
|
inherited |
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().
|
inherited |
|
inherited |
Referenced by get_comdat_group(), get_comdat_group_id(), set_comdat_group(), and symtab_node().
|
inherited |
Referenced by get_section(), set_section_for_node(), set_section_for_node(), and symtab_node().