Comments

For PR 35688 I fixed the compiler to reduce the visibility of a template
instantiation based on the visibility of its template arguments. As a
result of this, we seem to have started marking some external symbols as
.hidden because:
1) One of the template arguments is hidden, so the instantiation is as well.
2) The template has DECL_VISIBILITY_SPECIFIED because it is inside a
namespace with a visibility attribute.
3) default_binds_local_p_1 decides that a decl with explicit non-default
visibility binds locally, so it gets a .hidden directive.
The issue here is that there is no explicit non-default visibility, so
we should clear DECL_VISIBILITY_SPECIFIED when reducing the visibility
of a declaration.
Tested x86_64-pc-linux-gnu, applying to trunk.