aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/jcf-write.c10
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/testsuite/libjava.lang/PR29013.java9
-rw-r--r--libjava/testsuite/libjava.lang/PR29013.out0
5 files changed, 28 insertions, 3 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 5ffb6df..af1c42b 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,5 +1,11 @@
2006-09-12 Tom Tromey <tromey@redhat.com>
+ PR java/29013:
+ * jcf-write.c (generate_bytecode_insns) <CALL_EXPR>: Always note
+ the push of the called method's return result.
+
+2006-09-12 Tom Tromey <tromey@redhat.com>
+
* jvspec.c (lang_specific_driver): Read spec file even if
-fsyntax-only.
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index aa4d33b..b68ec25 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -2651,10 +2651,14 @@ generate_bytecode_insns (tree exp, int target, struct jcf_partial *state)
if (TREE_CODE (f) != VOID_TYPE)
{
int size = TYPE_IS_WIDE (f) ? 2 : 1;
+ /* Always note the push here, so that we correctly
+ compute the required maximum stack size. */
+ NOTE_PUSH (size);
if (target == IGNORE_TARGET)
- emit_pop (size, state);
- else
- NOTE_PUSH (size);
+ {
+ emit_pop (size, state);
+ NOTE_POP (size);
+ }
}
break;
}
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 7e27a66..da8704f 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,5 +1,11 @@
2006-09-12 Tom Tromey <tromey@redhat.com>
+ PR java/29013:
+ * testsuite/libjava.lang/PR29013.out: Likewise.
+ * testsuite/libjava.lang/PR29013.java: New file.
+
+2006-09-12 Tom Tromey <tromey@redhat.com>
+
* testsuite/libjava.jacks/jacks.exp (load_gcc_lib): Removed.
2006-09-07 Matthias Klose <doko@debian.org>
diff --git a/libjava/testsuite/libjava.lang/PR29013.java b/libjava/testsuite/libjava.lang/PR29013.java
new file mode 100644
index 0000000..942ba97
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR29013.java
@@ -0,0 +1,9 @@
+public class PR29013 {
+ public static int result() { return 5; }
+
+ public static void computeResult() { result(); }
+
+ public static void main(String[] args) {
+ computeResult();
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/PR29013.out b/libjava/testsuite/libjava.lang/PR29013.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/PR29013.out