diff options
author | Tom Tromey <tromey@redhat.com> | 2005-02-19 03:57:21 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2005-02-19 03:57:21 +0000 |
commit | b55cb4a133f6a190683d82fe667da268c488c80e (patch) | |
tree | fb478d9a5ba65e65e1aaf8e6479c51f09ef1961b /libjava | |
parent | e863ccf3286cb6d200eca1917b72e485aca71a26 (diff) | |
download | gcc-b55cb4a133f6a190683d82fe667da268c488c80e.zip gcc-b55cb4a133f6a190683d82fe667da268c488c80e.tar.gz gcc-b55cb4a133f6a190683d82fe667da268c488c80e.tar.bz2 |
re PR java/20056 ('verification failed: incompatible type on stack' with --indirect-dispatch)
PR java/20056:
* verify.cc (type::equals): Fixed test.
* testsuite/libjava.lang/PR20056.out: New file.
* testsuite/libjava.lang/PR20056.java: New file.
From-SVN: r95266
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 7 | ||||
-rw-r--r-- | libjava/testsuite/libjava.lang/PR20056.java | 13 | ||||
-rw-r--r-- | libjava/testsuite/libjava.lang/PR20056.out | 1 | ||||
-rw-r--r-- | libjava/verify.cc | 8 |
4 files changed, 25 insertions, 4 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 808f527..11b3228 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2005-02-18 Tom Tromey <tromey@redhat.com> + + PR java/20056: + * verify.cc (type::equals): Fixed test. + * testsuite/libjava.lang/PR20056.out: New file. + * testsuite/libjava.lang/PR20056.java: New file. + 2005-02-18 Bryce McKinlay <mckinlay@redhat.com> * java/util/LinkedHashMap (addEntry): Call remove() with key argument, diff --git a/libjava/testsuite/libjava.lang/PR20056.java b/libjava/testsuite/libjava.lang/PR20056.java new file mode 100644 index 0000000..f73eb7f --- /dev/null +++ b/libjava/testsuite/libjava.lang/PR20056.java @@ -0,0 +1,13 @@ +public class PR20056 { + int x; + PR20056(int x) {} + PR20056(PR20056 f) { + // The verifier rejected the generated code in this case. + this(f.x = 0); + } + + public static void main(String[] args) + { + System.out.println("maude"); + } +} diff --git a/libjava/testsuite/libjava.lang/PR20056.out b/libjava/testsuite/libjava.lang/PR20056.out new file mode 100644 index 0000000..b3668c4 --- /dev/null +++ b/libjava/testsuite/libjava.lang/PR20056.out @@ -0,0 +1 @@ +maude diff --git a/libjava/verify.cc b/libjava/verify.cc index 9df0316..a809307 100644 --- a/libjava/verify.cc +++ b/libjava/verify.cc @@ -754,10 +754,10 @@ private: bool equals (const type &other, _Jv_BytecodeVerifier *vfy) { // Only works for reference types. - if (key != reference_type - || key != uninitialized_reference_type - || other.key != reference_type - || other.key != uninitialized_reference_type) + if ((key != reference_type + && key != uninitialized_reference_type) + || (other.key != reference_type + && other.key != uninitialized_reference_type)) return false; // Only for single-valued types. if (klass->ref_next || other.klass->ref_next) |