From 1549c4e552ed7d8a92b83f3b5deb01867ca5e3a9 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 30 Mar 2006 16:39:17 +0000 Subject: [PATCH] re PR java/26042 (ICE in mark_reference_fields, at java/boehm.c:105) gcc/java PR java/26042: * parse.y (java_reorder_fields): Reset superclass field's size as well. libjava PR java/26042: * testsuite/libjava.compile/pr26042.java: New file. From-SVN: r112540 --- gcc/java/ChangeLog | 6 ++++++ gcc/java/parse.y | 4 ++++ libjava/ChangeLog | 5 +++++ libjava/testsuite/libjava.compile/pr26042.java | 12 ++++++++++++ 4 files changed, 27 insertions(+) create mode 100644 libjava/testsuite/libjava.compile/pr26042.java diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 826d60808f01..64fea4add1a5 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,9 @@ +2006-03-30 Tom Tromey + + PR java/26042: + * parse.y (java_reorder_fields): Reset superclass field's size as + well. + 2006-03-28 Tom Tromey PR java/26390: diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 6b0bf767ca33..118c66f82217 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -7770,6 +7770,10 @@ java_reorder_fields (void) if (!DECL_NAME (TYPE_FIELDS (current_class))) { tree fields = TYPE_FIELDS (current_class); + /* This works around a problem where on some platforms, + the field might be given its size incorrectly. */ + DECL_SIZE (fields) = NULL_TREE; + DECL_SIZE_UNIT (fields) = NULL_TREE; TREE_CHAIN (fields) = nreverse (TREE_CHAIN (fields)); TYPE_SIZE (current_class) = NULL_TREE; } diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 50b30aff3e3e..9867c7a19167 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2006-03-30 Tom Tromey + + PR java/26042: + * testsuite/libjava.compile/pr26042.java: New file. + 2006-03-29 Tom Tromey * sources.am, Makefile.in: Rebuilt. diff --git a/libjava/testsuite/libjava.compile/pr26042.java b/libjava/testsuite/libjava.compile/pr26042.java new file mode 100644 index 000000000000..485b36a5a540 --- /dev/null +++ b/libjava/testsuite/libjava.compile/pr26042.java @@ -0,0 +1,12 @@ +class One +{ + long l; // no ICE if this is int, not long + int b; // no ICE if this line is gone; type doesn't matter +} + +public class pr26042 +{ + class Three extends One { } + Three three () { return new Three (); } +} + -- 2.47.2