===================================================================
@@ -606,9 +606,8 @@ cgraph_externally_visible_p (struct cgra
{
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 var
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. */
===================================================================
@@ -508,6 +508,8 @@ dump_symtab_base (FILE *f, symtab_node n
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)
{