decl.c (maybe_commonize_var): Make the code match the comments.
authorMark Mitchell <mark@codesourcery.com>
Sun, 27 Apr 2003 19:33:38 +0000 (19:33 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Sun, 27 Apr 2003 19:33:38 +0000 (19:33 +0000)
* decl.c (maybe_commonize_var): Make the code match the comments.
* pt.c (instantiate_decl): Move call to import_export_decl.

From-SVN: r66135

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/pt.c

index ddf0c3eb8fe3ff5eb7fab5dc1e9d68912d2f34bb..1b6444d211b0f28b46c04ae496aac40b37b119f2 100644 (file)
@@ -1,3 +1,8 @@
+2003-04-27  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (maybe_commonize_var): Make the code match the comments.
+       * pt.c (instantiate_decl): Move call to import_export_decl.
+
 2003-04-26  Mark Mitchell  <mark@codesourcery.com>
 
        * decl2.c (finish_file): Fix merge botch.
index 181dd6fc4a6f5c2218d3732bfa34170b9e10e163..575a612d8f6bef977ac37aeb48d7061996d22af5 100644 (file)
@@ -7337,11 +7337,14 @@ maybe_commonize_var (tree decl)
   if (TREE_STATIC (decl)
       /* Don't mess with __FUNCTION__.  */
       && ! DECL_ARTIFICIAL (decl)
-      && current_function_decl
-      && DECL_CONTEXT (decl) == current_function_decl
-      && (DECL_DECLARED_INLINE_P (current_function_decl)
-         || DECL_TEMPLATE_INSTANTIATION (current_function_decl))
-      && TREE_PUBLIC (current_function_decl))
+      && DECL_FUNCTION_SCOPE_P (decl)
+      /* Unfortunately, import_export_decl has not always been called
+        before the function is processed, so we cannot simply check
+        DECL_COMDAT.  */ 
+      && (DECL_COMDAT (decl)
+         || ((DECL_DECLARED_INLINE_P (DECL_CONTEXT (decl))
+              || DECL_TEMPLATE_INSTANTIATION (DECL_CONTEXT (decl)))
+             && TREE_PUBLIC (DECL_CONTEXT (decl)))))
     {
       /* If flag_weak, we don't need to mess with this, as we can just
         make the function weak, and let it refer to its unique local
index 9faf0353e0f47df3e509d8b3f2983c03c7999fee..02d910d5f34abe34012a1f89135c74cd9d171826 100644 (file)
@@ -10998,6 +10998,7 @@ instantiate_decl (d, defer_ok)
                                           NULL);
 
       /* Set up context.  */
+      import_export_decl (d);
       start_function (NULL_TREE, d, NULL_TREE, SF_PRE_PARSED);
 
       /* Create substitution entries for the parameters.  */
@@ -11028,7 +11029,6 @@ instantiate_decl (d, defer_ok)
 
       /* Finish the function.  */
       d = finish_function (0);
-      import_export_decl (d);
       expand_body (d);
     }