+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
{
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
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. */
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]);
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)
{