{
int toplev = toplevel_bindings_p ();
int defer_p;
- const char *filename;
/* Set the DECL_ASSEMBLER_NAME for the object. */
if (asmspec)
DECL_EXPR is expanded. */
defer_p = DECL_FUNCTION_SCOPE_P (decl) || DECL_VIRTUAL_P (decl);
- /* We try to defer namespace-scope static constants so that they are
- not emitted into the object file unnecessarily. */
- filename = LOCATION_FILE (input_location);
- if (!DECL_VIRTUAL_P (decl)
- && TREE_READONLY (decl)
- && DECL_INITIAL (decl) != NULL_TREE
- && DECL_INITIAL (decl) != error_mark_node
- && filename != NULL
- && ! EMPTY_CONSTRUCTOR_P (DECL_INITIAL (decl))
- && toplev
- && !TREE_PUBLIC (decl))
- {
- /* Fool with the linkage of static consts according to #pragma
- interface. */
- struct c_fileinfo *finfo = get_fileinfo (filename);
- if (!finfo->interface_unknown && !TREE_PUBLIC (decl))
- {
- TREE_PUBLIC (decl) = 1;
- DECL_EXTERNAL (decl) = finfo->interface_only;
- }
-
- defer_p = 1;
- }
- /* Likewise for template instantiations. */
- else if (DECL_LANG_SPECIFIC (decl)
- && DECL_IMPLICIT_INSTANTIATION (decl))
+ /* Defer template instantiations. */
+ if (DECL_LANG_SPECIFIC (decl)
+ && DECL_IMPLICIT_INSTANTIATION (decl))
defer_p = 1;
/* If we're not deferring, go ahead and assemble the variable. */