From: Tom Tromey Date: Tue, 12 Sep 2006 19:00:48 +0000 (+0000) Subject: re PR java/29013 (gcj generates a MetalLookAndFeel class that fails cacao's verifier) X-Git-Tag: releases/gcc-4.2.0~1420 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f8248aaa3b808d42da244c4c69feaa0db61ff489;p=thirdparty%2Fgcc.git re PR java/29013 (gcj generates a MetalLookAndFeel class that fails cacao's verifier) gcc/java PR java/29013: * jcf-write.c (generate_bytecode_insns) : Always note the push of the called method's return result. libjava PR java/29013: * testsuite/libjava.lang/PR29013.out: Likewise. * testsuite/libjava.lang/PR29013.java: New file. From-SVN: r116902 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 5ffb6df295a3..af1c42b12e45 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +2006-09-12 Tom Tromey + + PR java/29013: + * jcf-write.c (generate_bytecode_insns) : Always note + the push of the called method's return result. + 2006-09-12 Tom Tromey * jvspec.c (lang_specific_driver): Read spec file even if diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index aa4d33b141f8..b68ec2502291 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 7e27a661b403..da8704f72dc3 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2006-09-12 Tom Tromey + + PR java/29013: + * testsuite/libjava.lang/PR29013.out: Likewise. + * testsuite/libjava.lang/PR29013.java: New file. + 2006-09-12 Tom Tromey * testsuite/libjava.jacks/jacks.exp (load_gcc_lib): Removed. diff --git a/libjava/testsuite/libjava.lang/PR29013.java b/libjava/testsuite/libjava.lang/PR29013.java new file mode 100644 index 000000000000..942ba97bb8e2 --- /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 000000000000..e69de29bb2d1