diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0db7144ee0f44d2ce6ae78a568aa3c1bf2f33ff0..6439776555fe51bdac79903a8ad3a68fd51338a1 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -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:
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 35c8ca77e9eb34853efd6953297961409f8c4a5e..38db639d3efa334969eaf5926039d7a804554a56 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -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);
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 6990e2c37679088953f359128a1a0a9f774e9f33..ced8c5168d9c7d65e54b38770e2f27fb5787ad28 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -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);