re PR c++/6395 (gcc-3_1-branch regression for g++.old-deja/g++.jason/synth5.C)

PR c++/6395
        * decl.c (make_rtl_for_nonlocal_decl): Don't mess with #pragma i/i
        stuff for comdats.

From-SVN: r52696
This commit is contained in:
Jason Merrill 2002-04-23 19:51:30 -04:00 committed by Jason Merrill
parent cff2779594
commit b602511f62
2 changed files with 18 additions and 11 deletions

View File

@ -1,3 +1,9 @@
2002-04-24 Jason Merrill <jason@redhat.com>
PR c++/6395
* decl.c (make_rtl_for_nonlocal_decl): Don't mess with #pragma i/i
stuff for comdats.
2002-04-23 Jakub Jelinek <jakub@redhat.com>
* parse.y (check_class_key): Allow KEY to be union/enum/struct/class

View File

@ -7951,17 +7951,15 @@ make_rtl_for_nonlocal_decl (decl, init, asmspec)
DECL_STMT is expanded. */
defer_p = DECL_FUNCTION_SCOPE_P (decl) || DECL_VIRTUAL_P (decl);
/* We try to defer namespace-scope static constants and template
instantiations so that they are not emitted into the object file
unnecessarily. */
if ((!DECL_VIRTUAL_P (decl)
&& TREE_READONLY (decl)
&& DECL_INITIAL (decl) != NULL_TREE
&& DECL_INITIAL (decl) != error_mark_node
&& ! EMPTY_CONSTRUCTOR_P (DECL_INITIAL (decl))
&& toplev
&& !TREE_PUBLIC (decl))
|| DECL_COMDAT (decl))
/* We try to defer namespace-scope static constants so that they are
not emitted into the object file unnecessarily. */
if (!DECL_VIRTUAL_P (decl)
&& TREE_READONLY (decl)
&& DECL_INITIAL (decl) != NULL_TREE
&& DECL_INITIAL (decl) != error_mark_node
&& ! EMPTY_CONSTRUCTOR_P (DECL_INITIAL (decl))
&& toplev
&& !TREE_PUBLIC (decl))
{
/* Fool with the linkage of static consts according to #pragma
interface. */
@ -7973,6 +7971,9 @@ make_rtl_for_nonlocal_decl (decl, init, asmspec)
defer_p = 1;
}
/* Likewise for template instantiations. */
else if (DECL_COMDAT (decl))
defer_p = 1;
/* If we're deferring the variable, we only need to make RTL if
there's an ASMSPEC. Otherwise, we'll lazily create it later when