inline bool
can_be_discarded_p (void)
{
- return (DECL_EXTERNAL (decl)
+ return ((DECL_EXTERNAL (decl)
+ && !in_other_partition)
|| ((get_comdat_group ()
|| DECL_COMMON (decl)
|| (DECL_SECTION_NAME (decl) && DECL_WEAK (decl)))
/* Avoid mangling of already mangled clones.
??? should have a flag whether a symbol has a 'private' name already,
since we produce some symbols like that i.e. for global constructors
- that are not really clones. */
+ that are not really clones.
+ ??? it is what unique_name means. We only need to set it when doing
+ private symbols. */
if (node->unique_name)
{
if (dump_file)
defined by the non-LTO part. */
privatize_symbol_name (node);
TREE_PUBLIC (node->decl) = 1;
+ /* After privatization the node should not conflict with any other symbol,
+ so it is prevailing. This is important to keep binds_to_current_def_p
+ to work across partitions. */
+ node->resolution = LDPR_PREVAILING_DEF_IRONLY;
DECL_VISIBILITY (node->decl) = VISIBILITY_HIDDEN;
DECL_VISIBILITY_SPECIFIED (node->decl) = true;
if (dump_file)