From: Tom Tromey Date: Thu, 30 Mar 2006 16:39:17 +0000 (+0000) Subject: re PR java/26042 (ICE in mark_reference_fields, at java/boehm.c:105) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1549c4e552ed7d8a92b83f3b5deb01867ca5e3a9;p=gcc.git 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 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 826d60808f0..64fea4add1a 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 6b0bf767ca3..118c66f8221 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 50b30aff3e3..9867c7a1916 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 00000000000..485b36a5a54 --- /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 (); } +} +