diff options
author | Strager Neds <strager.nds@gmail.com> | 2020-11-10 11:42:01 -0700 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 2020-11-10 11:44:15 -0700 |
commit | 8b9a92f794b8ad8011e6beb11a609efa635c4600 (patch) | |
tree | 015dae9357148c23ef517657a3b019656fd2ebd0 /gcc/tree.c | |
parent | 5e41e7f0928de55d189475fc14f7e6c9737cd507 (diff) | |
download | gcc-8b9a92f794b8ad8011e6beb11a609efa635c4600.zip gcc-8b9a92f794b8ad8011e6beb11a609efa635c4600.tar.gz gcc-8b9a92f794b8ad8011e6beb11a609efa635c4600.tar.bz2 |
Refactor copying decl section names
gcc/
* cgraph.h (symtab_node::get_section): Constify.
(symtab_node::set_section): Declare new overload.
* symtab.c (symtab_node::set_section): Define new overload.
(symtab_node::copy_visibility_from): Use new overload of
symtab_node::set_section.
(symtab_node::resolve_alias): Same.
* tree.h (set_decl_section_name): Declare new overload.
* tree.c (set_decl_section_name): Define new overload.
* tree-emutls.c (get_emutls_init_templ_addr): Same.
* cgraphclones.c (cgraph_node::create_virtual_clone): Use new
overload of symtab_node::set_section.
(cgraph_node::create_version_clone_with_body): Same.
* trans-mem.c (ipa_tm_create_version): Same.
gcc/c
* c-decl.c (merge_decls): Use new overload of
set_decl_section_name.
gcc/cp
* decl.c (duplicate_decls): Use new overload of
set_decl_section_name.
* method.c (use_thunk): Same.
* optimize.c (maybe_clone_body): Same.
* coroutines.cc (act_des_fn): Same.
gcc/d
* decl.cc (finish_thunk): Use new overload of
set_decl_section_name
Diffstat (limited to 'gcc/tree.c')
-rw-r--r-- | gcc/tree.c | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -773,6 +773,33 @@ set_decl_section_name (tree node, const char *value) snode->set_section (value); } +/* Set section name of NODE to match the section name of OTHER. + + set_decl_section_name (decl, other) is equivalent to + set_decl_section_name (decl, DECL_SECTION_NAME (other)), but possibly more + efficient. */ +void +set_decl_section_name (tree decl, const_tree other) +{ + struct symtab_node *other_node = symtab_node::get (other); + if (other_node) + { + struct symtab_node *decl_node; + if (VAR_P (decl)) + decl_node = varpool_node::get_create (decl); + else + decl_node = cgraph_node::get_create (decl); + decl_node->set_section (*other_node); + } + else + { + struct symtab_node *decl_node = symtab_node::get (decl); + if (!decl_node) + return; + decl_node->set_section (NULL); + } +} + /* Return TLS model of a variable NODE. */ enum tls_model decl_tls_model (const_tree node) |