From fc43d1f22eeb96d247281ebb4b7f0f9469b86333 Mon Sep 17 00:00:00 2001
From: mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Tue, 3 Apr 2001 23:37:53 +0000
Subject: [PATCH] 	* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@41066 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/cp/ChangeLog   |  7 +++++++
 gcc/cp/decl2.c     | 30 ++++++++++++++++--------------
 gcc/cp/semantics.c |  5 +++++
 3 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0db7144ee0f4..6439776555fe 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 35c8ca77e9eb..38db639d3efa 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 6990e2c37679..ced8c5168d9c 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);
 
-- 
GitLab