diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-06-13 00:23:55 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-06-12 22:23:55 +0000 |
commit | 24e49ea0b11e0ccfb2c18b7d79c5cb46f36f8db8 (patch) | |
tree | 614d47109aba7fe36bcb27ee602307278455a372 /gcc/symtab.c | |
parent | 6ad386b725dfac340e0d337d4c20e603929c7f9a (diff) | |
download | gcc-24e49ea0b11e0ccfb2c18b7d79c5cb46f36f8db8.zip gcc-24e49ea0b11e0ccfb2c18b7d79c5cb46f36f8db8.tar.gz gcc-24e49ea0b11e0ccfb2c18b7d79c5cb46f36f8db8.tar.bz2 |
symtab.c (symtab_node::reset_section): New method.
* symtab.c (symtab_node::reset_section): New method.
* cgraph.c (cgraph_node_cannot_be_local_p_1): Accept non-local
for localization.
* cgraph.h (reset_section): Declare.
* ipa-inline-analysis.c (do_estimate_growth): Check for comdat groups;
do not consider comdat locals.
* cgraphclones.c (set_new_clone_decl_and_node_flags): Get section
for new symbol.
* ipa-visiblity.c (cgraph_externally_visible_p): Cleanup.
(update_visibility_by_resolution_info): Consider UNDEF; fix checking;
reset sections of symbols dragged out of the comdats.
(function_and_variable_visibility): Reset sections of localized symbols.
From-SVN: r211600
Diffstat (limited to 'gcc/symtab.c')
-rw-r--r-- | gcc/symtab.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/symtab.c b/gcc/symtab.c index 8158acc..b68a16f 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -1176,6 +1176,21 @@ symtab_node::set_section (const char *section) symtab_for_node_and_aliases (this, set_section_1, const_cast<char *>(section), true); } +/* Reset section of NODE. That is when NODE is being brought local + we may want to clear section produced for comdat group and depending + on function-sections produce now, local, unique section for it. */ + +void +symtab_node::reset_section () +{ + if (!this->implicit_section) + return; + this->set_section (NULL); + resolve_unique_section (this->decl, 0, + is_a <cgraph_node *> (this) + ? flag_function_sections : flag_data_sections); +} + /* Worker for symtab_resolve_alias. */ static bool |