===================================================================
@@ -873,6 +873,17 @@ function_and_variable_visibility (bool w
segfault though. */
symtab_dissolve_same_comdat_group_list ((symtab_node) node);
}
+ if (node->symbol.externally_visible
+ && DECL_COMDAT (node->symbol.decl)
+ && comdat_can_be_unshared_p ((symtab_node) node))
+ {
+ if (dump_file
+ && DECL_VISIBILITY (node->symbol.decl) != VISIBILITY_HIDDEN)
+ fprintf (dump_file, "Promoting visibility to hidden: %s/%i\n",
+ cgraph_node_name (node), node->symbol.order);
+ DECL_VISIBILITY (node->symbol.decl) = VISIBILITY_HIDDEN;
+ DECL_VISIBILITY_SPECIFIED (node->symbol.decl) = true;
+ }
if (node->thunk.thunk_p
&& TREE_PUBLIC (node->symbol.decl))
@@ -980,6 +991,17 @@ function_and_variable_visibility (bool w
symtab_dissolve_same_comdat_group_list ((symtab_node) vnode);
vnode->symbol.resolution = LDPR_PREVAILING_DEF_IRONLY;
}
+ if (vnode->symbol.externally_visible
+ && DECL_COMDAT (vnode->symbol.decl)
+ && comdat_can_be_unshared_p ((symtab_node) vnode))
+ {
+ if (dump_file
+ && DECL_VISIBILITY (vnode->symbol.decl) == VISIBILITY_HIDDEN)
+ fprintf (dump_file, "Promoting visibility to hidden: %s/%i\n",
+ varpool_node_name (vnode), vnode->symbol.order);
+ DECL_VISIBILITY (vnode->symbol.decl) = VISIBILITY_HIDDEN;
+ DECL_VISIBILITY_SPECIFIED (vnode->symbol.decl) = true;
+ }
}
if (dump_file)