* decl.c (finish_method): Give methods once-only linkage.
authorJulian Brown <julian@codesourcery.com>
Tue, 8 Mar 2005 15:42:57 +0000 (15:42 +0000)
committerJulian Brown <jules@gcc.gnu.org>
Tue, 8 Mar 2005 15:42:57 +0000 (15:42 +0000)
From-SVN: r96106

gcc/java/ChangeLog
gcc/java/decl.c

index 298bd725b85843cd0ff091fdaba3ece0ddf985dd..78fab7f668bacc907354f4a6619014e5868eb2ad 100644 (file)
@@ -1,3 +1,7 @@
+2005-03-08  Julian Brown  <julian@codesourcery.com>
+
+       * decl.c (finish_method): Give methods once-only linkage.
+
 2005-03-07  Bryce McKinlay  <mckinlay@redhat.com>
 
        * verify-glue.c (vfy_is_assignable_from): Perform static check using
index b7aa61650d3548a5d06c847ce0f0aed302f9992d..ea7a9b4209a68dcb13c71604136baa5f188d2987 100644 (file)
@@ -2036,6 +2036,13 @@ finish_method (tree fndecl)
                    build2 (TRY_FINALLY_EXPR, void_type_node, *tp, exit));
     }
 
+  /* Ensure non-abstract non-static non-private members are defined only once
+     when linking. This is an issue when using CNI to interface with C++ object
+     files.  */
+  if (! METHOD_STATIC (fndecl) && ! METHOD_PRIVATE (fndecl)
+      && ! METHOD_ABSTRACT (fndecl))
+    make_decl_one_only (fndecl);
+
   /* Prepend class initialization for static methods reachable from
      other classes.  */
   if (METHOD_STATIC (fndecl) && ! METHOD_PRIVATE (fndecl)