summaryrefslogtreecommitdiff
path: root/gcc/ipa-visibility.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2014-06-11 05:51:23 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2014-06-11 05:51:23 +0000
commite4c07a066a592ab5eeaf9490187013769337baae (patch)
tree1eaa587ddb6f0f91bbd446438e1bb46f9b1df815 /gcc/ipa-visibility.c
parentb37eccc71775be636c10be115a01da2b3e14b6a7 (diff)
downloadgcc-e4c07a066a592ab5eeaf9490187013769337baae.tar.gz
* varasm.c (set_implicit_section): New function.
(resolve_unique_section): Use it to set implicit section for aliases, too. (get_named_text_section): Use symtab_get_node (decl)->implicit_section (default_function_section): Likewise. (decl_binds_to_current_def_p): Constify argument. * varasm.h (decl_binds_to_current_def_p): Update prototype. * asan.c (asan_protect_global): Use symtab_get_node (decl)->implicit_section. * symtab.c (dump_symtab_base): Dump implicit sections. (verify_symtab_base): Verify sanity of sectoins and comdats. (symtab_resolve_alias): Alias share the section of its target. (set_section_1): New function. (symtab_node::set_section): Move here, recurse to aliases. (verify_symtab): Check for duplicated symtab lists. * tree-core.h (implicit_section_name_p): Remove. * tree-vect-data-refs.c: Include varasm.h. (vect_can_force_dr_alignment_p): Fix conditional on when decl bints to current definition; use symtab_get_node (decl)->implicit_section. * cgraph.c (cgraph_make_node_local_1): Fix section set. * cgraph.h (struct symtab_node): Add implicit_section. (set_section): Rename to ... (set_section_for_node): ... this one. (set_section): Declare. * tree.h (DECL_HAS_IMPLICIT_SECTION_NAME_P): Remove. * lto-cgraph.c (lto_output_node, lto_output_varpool_node, input_overwrite_node, input_varpool_node): Stream implicit_section. * ipa.c (symtab_remove_unreachable_nodes): Do not check symtab before removal; it will fail in LTO. * vtable-class-hierarchy.c: Use symtab_get_node (var_decl)->implicit_section. * optimize.c (cdtor_comdat_group): Fix handling of aliases. (maybe_clone_body): Move symbol across comdat groups. * method.c (use_thunk): Copy implicit section flag. * go/go-gcc.cc (Gcc_backend::global_variable_set_init): Use symtab_get_node(var_decl)->implicit_section. * lto.c (read_cgraph_and_symbols): Remove unreachable symbols. (do_whole_program_analysis): Use verify_symtab. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211434 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa-visibility.c')
-rw-r--r--gcc/ipa-visibility.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/ipa-visibility.c b/gcc/ipa-visibility.c
index 039b756b39a..2d634416226 100644
--- a/gcc/ipa-visibility.c
+++ b/gcc/ipa-visibility.c
@@ -512,7 +512,8 @@ function_and_variable_visibility (bool whole_program)
next = next->same_comdat_group)
{
next->set_comdat_group (NULL);
- next->set_section (NULL);
+ if (!next->alias)
+ next->set_section (NULL);
symtab_make_decl_local (next->decl);
next->unique_name = ((next->resolution == LDPR_PREVAILING_DEF_IRONLY
|| next->unique_name
@@ -527,7 +528,7 @@ function_and_variable_visibility (bool whole_program)
}
if (TREE_PUBLIC (node->decl))
node->set_comdat_group (NULL);
- if (DECL_COMDAT (node->decl))
+ if (DECL_COMDAT (node->decl) && !node->alias)
node->set_section (NULL);
symtab_make_decl_local (node->decl);
}
@@ -646,7 +647,8 @@ function_and_variable_visibility (bool whole_program)
next = next->same_comdat_group)
{
next->set_comdat_group (NULL);
- next->set_section (NULL);
+ if (!next->alias)
+ next->set_section (NULL);
symtab_make_decl_local (next->decl);
next->unique_name = ((next->resolution == LDPR_PREVAILING_DEF_IRONLY
|| next->unique_name
@@ -657,7 +659,7 @@ function_and_variable_visibility (bool whole_program)
}
if (TREE_PUBLIC (vnode->decl))
vnode->set_comdat_group (NULL);
- if (DECL_COMDAT (vnode->decl))
+ if (DECL_COMDAT (vnode->decl) && !vnode->alias)
vnode->set_section (NULL);
symtab_make_decl_local (vnode->decl);
vnode->resolution = LDPR_PREVAILING_DEF_IRONLY;