OSDN Git Service

* decl.c (finish_method): Give methods once-only linkage.
authorjules <jules@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 8 Mar 2005 15:42:57 +0000 (15:42 +0000)
committerjules <jules@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 8 Mar 2005 15:42:57 +0000 (15:42 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96106 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 298bd72..78fab7f 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 b7aa616..ea7a9b4 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)