ipa.c (cgraph_externally_visible_p, [...]): Local comdats are not externally visible.
* ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p): Local comdats are not externally visible. * symtab.c (dump_symtab_base): Dump externally visible. (verify_symtab_base): Verify back links in the symtab hash. From-SVN: r200064
This commit is contained in:
parent
a8355e5178
commit
e5b962d0cc
|
@ -1,3 +1,10 @@
|
|||
2013-06-13 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* ipa.c (cgraph_externally_visible_p, varpool_externally_visible_p):
|
||||
Local comdats are not externally visible.
|
||||
* symtab.c (dump_symtab_base): Dump externally visible.
|
||||
(verify_symtab_base): Verify back links in the symtab hash.
|
||||
|
||||
2013-06-13 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
* fold-const.c (operand_equal_p): Consider NOP_EXPR and
|
||||
|
|
|
@ -606,9 +606,8 @@ cgraph_externally_visible_p (struct cgraph_node *node,
|
|||
{
|
||||
if (!node->symbol.definition)
|
||||
return false;
|
||||
if (!DECL_COMDAT (node->symbol.decl)
|
||||
&& (!TREE_PUBLIC (node->symbol.decl)
|
||||
|| DECL_EXTERNAL (node->symbol.decl)))
|
||||
if (!TREE_PUBLIC (node->symbol.decl)
|
||||
|| DECL_EXTERNAL (node->symbol.decl))
|
||||
return false;
|
||||
|
||||
/* Do not try to localize built-in functions yet. One of problems is that we
|
||||
|
@ -667,7 +666,7 @@ varpool_externally_visible_p (struct varpool_node *vnode)
|
|||
if (DECL_EXTERNAL (vnode->symbol.decl))
|
||||
return true;
|
||||
|
||||
if (!DECL_COMDAT (vnode->symbol.decl) && !TREE_PUBLIC (vnode->symbol.decl))
|
||||
if (!TREE_PUBLIC (vnode->symbol.decl))
|
||||
return false;
|
||||
|
||||
/* If linker counts on us, we must preserve the function. */
|
||||
|
|
11
gcc/symtab.c
11
gcc/symtab.c
|
@ -508,6 +508,8 @@ dump_symtab_base (FILE *f, symtab_node node)
|
|||
fprintf (f, " force_output");
|
||||
if (node->symbol.forced_by_abi)
|
||||
fprintf (f, " forced_by_abi");
|
||||
if (node->symbol.externally_visible)
|
||||
fprintf (f, " externally_visible");
|
||||
if (node->symbol.resolution != LDPR_UNKNOWN)
|
||||
fprintf (f, " %s",
|
||||
ld_plugin_symbol_resolution_names[(int)node->symbol.resolution]);
|
||||
|
@ -655,6 +657,15 @@ verify_symtab_base (symtab_node node)
|
|||
error ("node not found in symtab decl hashtable");
|
||||
error_found = true;
|
||||
}
|
||||
if (hashed_node != node
|
||||
&& (!is_a <cgraph_node> (node)
|
||||
|| !dyn_cast <cgraph_node> (node)->clone_of
|
||||
|| dyn_cast <cgraph_node> (node)->clone_of->symbol.decl
|
||||
!= node->symbol.decl))
|
||||
{
|
||||
error ("node differs from symtab decl hashtable");
|
||||
error_found = true;
|
||||
}
|
||||
}
|
||||
if (assembler_name_hash)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue