decl2.c (import_export_vtable): Always make artificials comdat.
authorJason Merrill <jason@yorick.cygnus.com>
Fri, 4 Sep 1998 01:43:58 +0000 (01:43 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 4 Sep 1998 01:43:58 +0000 (21:43 -0400)
* decl2.c (import_export_vtable): Always make artificials comdat.
(import_export_decl): Likewise.
* pt.c (mark_decl_instantiated): Likewise.

From-SVN: r22230

gcc/cp/ChangeLog
gcc/cp/NEWS
gcc/cp/decl2.c
gcc/cp/pt.c

index d497b2cb2a9e40354413e3eb51e81b545d21567a..656af650508fe986371622c157ed449c769294de 100644 (file)
@@ -1,3 +1,9 @@
+1998-09-03  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl2.c (import_export_vtable): Always make artificials comdat.
+       (import_export_decl): Likewise.
+       * pt.c (mark_decl_instantiated): Likewise.
+
 1998-09-03  Mark Mitchell  <mark@markmitchell.com>
 
        * cp-tree.h (finish_globally_qualified_member_call_expr):
index e114bd037cd8bad1f879f20fe4e541be3ddff584..9cb7d5b2c2682129d015ebcabe858d2f003763d0 100644 (file)
@@ -1,4 +1,4 @@
-*** Changes since EGCS 1.0:
+*** Changes in EGCS 1.1:
 
 * Namespaces are fully supported.  The library has not yet been converted 
   to use namespace std, however, and the old std-faking code is still on by
index e24af379e9712f767e29342e99cd7925a515d8bc..c01bda29c432cae2b6b492f86ebeb25654c9f74c 100644 (file)
@@ -2555,10 +2555,9 @@ import_export_vtable (decl, type, final)
       DECL_EXTERNAL (decl) = ! CLASSTYPE_VTABLE_NEEDS_WRITING (type);
       DECL_INTERFACE_KNOWN (decl) = 1;
 
-      /* For WIN32 we also want to put explicit instantiations in
-        linkonce sections.  */
-      if (CLASSTYPE_EXPLICIT_INSTANTIATION (type))
-       maybe_make_one_only (decl);
+      /* Always make vtables weak.  */
+      if (flag_weak)
+       comdat_linkage (decl);
     }
   else
     {
@@ -2873,6 +2872,10 @@ import_export_decl (decl)
          DECL_NOT_REALLY_EXTERN (decl)
            = ! (CLASSTYPE_INTERFACE_ONLY (ctype)
                 || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines));
+
+         /* Always make artificials weak.  */
+         if (DECL_ARTIFICIAL (decl) && flag_weak)
+           comdat_linkage (decl);
        }
       else
        comdat_linkage (decl);
@@ -2894,10 +2897,9 @@ import_export_decl (decl)
            = ! (CLASSTYPE_INTERFACE_ONLY (ctype)
                 || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines));
 
-         /* For WIN32 we also want to put explicit instantiations in
-            linkonce sections.  */
-         if (CLASSTYPE_EXPLICIT_INSTANTIATION (ctype))
-           maybe_make_one_only (decl);
+         /* Always make artificials weak.  */
+         if (flag_weak)
+           comdat_linkage (decl);
        }
       else if (TYPE_BUILT_IN (ctype) && ctype == TYPE_MAIN_VARIANT (ctype))
        DECL_NOT_REALLY_EXTERN (decl) = 0;
index ab9332ac8ad91a2b4f7339b8fa99ff1cfb473ffb..d2251e8282fd8af3a257d07a60db0a8f37d64b84 100644 (file)
@@ -7202,9 +7202,12 @@ mark_decl_instantiated (result, extern_p)
       DECL_INTERFACE_KNOWN (result) = 1;
       DECL_NOT_REALLY_EXTERN (result) = 1;
 
+      /* Always make artificials weak.  */
+      if (DECL_ARTIFICIAL (result) && flag_weak)
+       comdat_linkage (result);
       /* For WIN32 we also want to put explicit instantiations in
         linkonce sections.  */
-      if (TREE_PUBLIC (result))
+      else if (TREE_PUBLIC (result))
        maybe_make_one_only (result);
     }
   else if (TREE_CODE (result) == FUNCTION_DECL)