GCC Middle and Back End API Reference
|
Data Structures | |
class | congruence_class |
struct | congruence_class_group |
struct | congruence_class_hash |
class | pass_ipa_icf |
class | sem_function |
class | sem_item |
class | sem_item_optimizer |
struct | sem_usage_hash |
class | sem_usage_pair |
struct | sem_usage_pair_hash |
class | sem_variable |
class | symbol_compare_collection |
struct | symbol_compare_hash |
struct | traverse_split_pair |
Typedefs | |
typedef hash_map< sem_usage_hash, auto_vec< sem_item * > > | ref_map |
typedef std::pair< symtab_node *, symtab_node * > | symtab_pair |
Enumerations | |
enum | sem_item_type { FUNC , VAR } |
Functions | |
static bool | set_local (cgraph_node *node, void *data) |
static bool | set_addressable (varpool_node *node, void *) |
static bool | clear_decl_rtl (symtab_node *node, void *) |
static int | redirect_all_callers (cgraph_node *n, cgraph_node *to) |
static int | sort_sem_items_by_decl_uid (const void *a, const void *b) |
static int | sort_congruence_classes_by_decl_uid (const void *a, const void *b) |
static int | sort_congruence_class_groups_by_decl_uid (const void *a, const void *b) |
static void | set_alias_uids (symtab_node *n, int uid) |
static void | ipa_icf_generate_summary (void) |
static void | ipa_icf_write_summary (void) |
static void | ipa_icf_read_summary (void) |
static unsigned int | ipa_icf_driver (void) |
Variables | |
static sem_item_optimizer * | optimizer = NULL |
const pass_data | pass_data_ipa_icf |
Interprocedural semantic function equality pass Copyright (C) 2014-2025 Free Software Foundation, Inc. Contributed by Jan Hubicka <hubicka@ucw.cz> and Martin Liska <mliska@suse.cz> This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
typedef hash_map<sem_usage_hash, auto_vec<sem_item *> > ipa_icf::ref_map |
typedef std::pair<symtab_node *, symtab_node *> ipa_icf::symtab_pair |
|
static |
Clear DECL_RTL of NODE. Helper for call_for_symbol_thunks_and_aliases.
References symtab_node::decl, NULL, and SET_DECL_RTL.
Referenced by ipa_icf::sem_function::merge(), and ipa_icf::sem_variable::merge().
|
static |
Semantic equality execution function.
References gcc_assert, NULL, optimizer, and TODO_remove_functions.
Referenced by ipa_icf::pass_ipa_icf::execute().
|
static |
Generate pass summary for IPA ICF pass.
References optimizer.
Referenced by ipa_icf::pass_ipa_icf::pass_ipa_icf().
|
static |
Read pass summary for IPA ICF pass.
References optimizer.
Referenced by ipa_icf::pass_ipa_icf::pass_ipa_icf().
|
static |
Write pass summary for IPA ICF pass.
References gcc_assert, and optimizer.
Referenced by ipa_icf::pass_ipa_icf::pass_ipa_icf().
|
static |
Redirect all callers of N and its aliases to TO. Remove aliases if possible. Return number of redirections made.
References AVAIL_INTERPOSABLE, cgraph_node::call_for_symbol_and_aliases(), cgraph_edge::caller, cgraph_node::callers, cgraph_node::can_remove_if_no_direct_calls_p(), symtab_node::decl, DECL_COMDAT_GROUP, dyn_cast(), cgraph_node::get_availability(), symtab_node::has_aliases_p(), cgraph_node::has_thunk_p(), i, symtab_node::iterate_direct_aliases(), cgraph_edge::next_callee, cgraph_edge::next_caller, NULL, redirect_all_callers(), cgraph_edge::redirect_callee(), ipa_ref::referring, cgraph_node::remove(), and cgraph_node::thunk.
Referenced by ipa_icf::sem_function::merge(), and redirect_all_callers().
|
static |
TREE_ADDRESSABLE of NODE to true. Helper for call_for_symbol_thunks_and_aliases.
References symtab_node::decl, and TREE_ADDRESSABLE.
Referenced by ipa_icf::sem_variable::merge().
|
static |
Set all points-to UIDs of aliases pointing to node N as UID.
References symtab_node::decl, symtab_node::dump_asm_name(), dump_file, FOR_EACH_ALIAS, ipa_ref::referring, set_alias_uids(), and SET_DECL_PT_UID.
Referenced by ipa_icf::sem_item_optimizer::fixup_points_to_sets(), and set_alias_uids().
|
static |
Set LOCAL_P of NODE to true if DATA is non-NULL. Helper for call_for_symbol_thunks_and_aliases.
References cgraph_node::local, and NULL.
Referenced by ipa_icf::sem_function::merge().
|
static |
Sort pair of congruence_class_groups A and B by DECL_UID of the first member of a first group.
Referenced by ipa_icf::sem_item_optimizer::merge_classes().
|
static |
Sort pair of congruence_classes A and B by DECL_UID of the first member.
References a, b, DECL_UID, and ipa_icf::congruence_class::members.
Referenced by ipa_icf::sem_item_optimizer::merge_classes().
|
static |
|
static |
Initialization and computation of symtab node hash, there data are propagated later on.
Referenced by ipa_icf::sem_item_optimizer::cgraph_removal_hook(), ipa_icf_cc_finalize(), ipa_icf_driver(), ipa_icf_generate_summary(), ipa_icf_read_summary(), ipa_icf_write_summary(), ipa_icf::sem_item_optimizer::traverse_congruence_split(), and ipa_icf::sem_item_optimizer::varpool_removal_hook().
const pass_data ipa_icf::pass_data_ipa_icf |
Referenced by ipa_icf::pass_ipa_icf::pass_ipa_icf().