aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2004-10-22 16:30:37 +0200
committerEric Botcazou <ebotcazou@gcc.gnu.org>2004-10-22 14:30:37 +0000
commite063dbf8f72632fa6727792f728cfa460c55ba08 (patch)
tree3b8c5244aeec80ed6bf98a3b21d8b26acb5c0f91 /gcc
parent8638a0f8190fbc5ac91e380d29ab37903ccdffb7 (diff)
downloadgcc-e063dbf8f72632fa6727792f728cfa460c55ba08.zip
gcc-e063dbf8f72632fa6727792f728cfa460c55ba08.tar.gz
gcc-e063dbf8f72632fa6727792f728cfa460c55ba08.tar.bz2
re PR java/17265 (Libjava doesn't build)
PR java/17265 * class.c (make_local_function_alias): Revert 2004-08-18 change. (make_method_value): Likewise. From-SVN: r89443
Diffstat (limited to 'gcc')
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/class.c45
2 files changed, 7 insertions, 44 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 5863fec..3691c4b 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2004-10-22 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR java/17265
+ * class.c (make_local_function_alias): Revert 2004-08-18 change.
+ (make_method_value): Likewise.
+
2004-10-21 Andrew Haley <aph@redhat.com>
PR java/18091:
diff --git a/gcc/java/class.c b/gcc/java/class.c
index b90513f..70a3b2b 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -1198,48 +1198,6 @@ get_access_flags_from_decl (tree decl)
abort ();
}
-static GTY (()) int alias_labelno = 0;
-
-/* Create a private alias for METHOD. Using this alias instead of the method
- decl ensures that ncode entries in the method table point to the real function
- at runtime, not a PLT entry. */
-
-static tree
-make_local_function_alias (tree method)
-{
-#ifdef ASM_OUTPUT_DEF
- tree alias;
- const char *method_name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (method));
- char *name = alloca (strlen (method_name) + 2);
- char *buf = alloca (strlen (method_name) + 128);
-
- /* Prefix method_name with 'L' for the alias label. */
- *name = 'L';
- strcpy (name + 1, method_name);
-
- ASM_GENERATE_INTERNAL_LABEL (buf, name, alias_labelno++);
- alias = build_decl (FUNCTION_DECL, get_identifier (buf),
- TREE_TYPE (method));
- DECL_CONTEXT (alias) = NULL;
- TREE_READONLY (alias) = TREE_READONLY (method);
- TREE_THIS_VOLATILE (alias) = TREE_THIS_VOLATILE (method);
- TREE_PUBLIC (alias) = 0;
- DECL_EXTERNAL (alias) = 0;
- DECL_ARTIFICIAL (alias) = 1;
- DECL_INLINE (alias) = 0;
- DECL_INITIAL (alias) = error_mark_node;
- TREE_ADDRESSABLE (alias) = 1;
- TREE_USED (alias) = 1;
- SET_DECL_ASSEMBLER_NAME (alias, DECL_NAME (alias));
- TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (alias)) = 1;
- if (!flag_syntax_only)
- assemble_alias (alias, DECL_ASSEMBLER_NAME (method));
- return alias;
-#else
- return method;
-#endif
-}
-
/** Make reflection data (_Jv_Field) for field FDECL. */
static tree
@@ -1311,8 +1269,7 @@ make_method_value (tree mdecl)
code = null_pointer_node;
if (DECL_RTL_SET_P (mdecl))
- code = build1 (ADDR_EXPR, nativecode_ptr_type_node,
- make_local_function_alias (mdecl));
+ code = build1 (ADDR_EXPR, nativecode_ptr_type_node, mdecl);
START_RECORD_CONSTRUCTOR (minit, method_type_node);
PUSH_FIELD_VALUE (minit, "name",
build_utf8_ref (DECL_CONSTRUCTOR_P (mdecl) ?