aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2002-01-28 16:52:27 +0000
committerTom Tromey <tromey@gcc.gnu.org>2002-01-28 16:52:27 +0000
commitadc8cb5dea72b7f9993b32a963c243007961bbff (patch)
tree8ed3e8b997f63faf1389995024ab7a0566889b73 /gcc/java
parent5a721dab82a65ae66c4b4a7ef05c8f287299a212 (diff)
downloadgcc-adc8cb5dea72b7f9993b32a963c243007961bbff.zip
gcc-adc8cb5dea72b7f9993b32a963c243007961bbff.tar.gz
gcc-adc8cb5dea72b7f9993b32a963c243007961bbff.tar.bz2
expr.c (build_jni_stub): Ensure storage for `meth' is generated.
* expr.c (build_jni_stub): Ensure storage for `meth' is generated. * parse.y (java_complete_expand_methods): Set current_function_decl before building JNI stub. From-SVN: r49286
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog7
-rw-r--r--gcc/java/expr.c7
-rw-r--r--gcc/java/parse.y6
3 files changed, 17 insertions, 3 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 14274b1..8e434f2 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,10 @@
+2002-01-28 Tom Tromey <tromey@redhat.com>
+
+ * expr.c (build_jni_stub): Ensure storage for `meth' is
+ generated.
+ * parse.y (java_complete_expand_methods): Set
+ current_function_decl before building JNI stub.
+
2002-01-26 Andreas Tobler <a.tobler@schweiz.ch>
* gcc/java/builtins.c (sqrt_builtin): Use BUILT_IN_SQRT, not
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index e3eaf35..a7cb59e 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -2168,8 +2168,13 @@ build_jni_stub (method)
TREE_PUBLIC (meth_var) = 0;
DECL_EXTERNAL (meth_var) = 0;
DECL_CONTEXT (meth_var) = method;
+ DECL_ARTIFICIAL (meth_var) = 1;
+ DECL_INITIAL (meth_var) = null_pointer_node;
+ TREE_USED (meth_var) = 1;
+ chainon (env_var, meth_var);
+ layout_decl (meth_var, 0);
make_decl_rtl (meth_var, NULL);
- meth_var = pushdecl_top_level (meth_var);
+ rest_of_decl_compilation (meth_var, NULL, 0, 0);
/* One strange way that the front ends are different is that they
store arguments differently. */
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index a75e3f9..8b33fad 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -1,6 +1,6 @@
/* Source code parsing and tree node generation for the GNU compiler
for the Java(TM) language.
- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com)
This file is part of GNU CC.
@@ -7723,7 +7723,9 @@ java_complete_expand_methods (class_decl)
if (METHOD_NATIVE (decl))
{
- tree body = build_jni_stub (decl);
+ tree body;
+ current_function_decl = decl;
+ body = build_jni_stub (decl);
BLOCK_EXPR_BODY (DECL_FUNCTION_BODY (decl)) = body;
}