decl2.c (import_export_decl): Don't call import_export_class when processing an inlin...
authorMark Mitchell <mark@codesourcery.com>
Tue, 3 Apr 2001 23:37:53 +0000 (23:37 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 3 Apr 2001 23:37:53 +0000 (23:37 +0000)
* decl2.c (import_export_decl): Don't call import_export_class
when processing an inline member function.
* semantics.c (expand_body): Call import_export_decl before
emitting inline functions.

From-SVN: r41066

gcc/cp/ChangeLog
gcc/cp/decl2.c
gcc/cp/semantics.c

index 0db7144..6439776 100644 (file)
@@ -1,3 +1,10 @@
+2001-04-03  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl2.c (import_export_decl): Don't call import_export_class 
+       when processing an inline member function.
+       * semantics.c (expand_body): Call import_export_decl before
+       emitting inline functions.
+
 2001-03-28  Richard Henderson  <rth@redhat.com>
 
        IA-64 ABI Exception Handling:
index 35c8ca7..38db639 100644 (file)
@@ -2672,21 +2672,23 @@ import_export_decl (decl)
     }
   else if (DECL_FUNCTION_MEMBER_P (decl))
     {
-      tree ctype = DECL_CONTEXT (decl);
-      import_export_class (ctype);
-      if (CLASSTYPE_INTERFACE_KNOWN (ctype)
-         && ! DECL_THIS_INLINE (decl))
+      if (!DECL_THIS_INLINE (decl))
        {
-         DECL_NOT_REALLY_EXTERN (decl)
-           = ! (CLASSTYPE_INTERFACE_ONLY (ctype)
-                || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines
-                    && !DECL_VINDEX (decl)));
-
-         /* Always make artificials weak.  */
-         if (DECL_ARTIFICIAL (decl) && flag_weak)
-           comdat_linkage (decl);
-         else
-           maybe_make_one_only (decl);
+         tree ctype = DECL_CONTEXT (decl);
+         import_export_class (ctype);
+         if (CLASSTYPE_INTERFACE_KNOWN (ctype))
+           {
+             DECL_NOT_REALLY_EXTERN (decl)
+               = ! (CLASSTYPE_INTERFACE_ONLY (ctype)
+                    || (DECL_THIS_INLINE (decl) && ! flag_implement_inlines
+                        && !DECL_VINDEX (decl)));
+
+             /* Always make artificials weak.  */
+             if (DECL_ARTIFICIAL (decl) && flag_weak)
+               comdat_linkage (decl);
+             else
+               maybe_make_one_only (decl);
+           }
        }
       else
        comdat_linkage (decl);
index 6990e2c..ced8c51 100644 (file)
@@ -2448,6 +2448,11 @@ expand_body (fn)
       return;
     }
 
+  /* Compute the appropriate object-file linkage for inline
+     functions.  */
+  if (DECL_INLINE (fn))
+    import_export_decl (fn);
+
   /* Emit any thunks that should be emitted at the same time as FN.  */
   emit_associated_thunks (fn);