aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraph.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2014-06-13 00:23:55 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2014-06-12 22:23:55 +0000
commit24e49ea0b11e0ccfb2c18b7d79c5cb46f36f8db8 (patch)
tree614d47109aba7fe36bcb27ee602307278455a372 /gcc/cgraph.c
parent6ad386b725dfac340e0d337d4c20e603929c7f9a (diff)
downloadgcc-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/cgraph.c')
-rw-r--r--gcc/cgraph.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 610bf67..f535740 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -2169,6 +2169,7 @@ cgraph_node_cannot_be_local_p_1 (struct cgraph_node *node,
&& !node->forced_by_abi
&& !symtab_used_from_object_file_p (node)
&& !node->same_comdat_group)
+ || DECL_EXTERNAL (node->decl)
|| !node->externally_visible));
}
@@ -2259,14 +2260,14 @@ cgraph_make_node_local_1 (struct cgraph_node *node, void *data ATTRIBUTE_UNUSED)
{
symtab_make_decl_local (node->decl);
- node->set_section (NULL);
node->set_comdat_group (NULL);
node->externally_visible = false;
node->forced_by_abi = false;
node->local.local = true;
- node->set_section (NULL);
+ node->reset_section ();
node->unique_name = (node->resolution == LDPR_PREVAILING_DEF_IRONLY
- || node->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP);
+ || node->unique_name
+ || node->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP);
node->resolution = LDPR_PREVAILING_DEF_IRONLY;
gcc_assert (cgraph_function_body_availability (node) == AVAIL_LOCAL);
}