aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/parse.y4
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/testsuite/libjava.compile/pr26042.java12
4 files changed, 27 insertions, 0 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 826d608..64fea4a 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2006-03-30 Tom Tromey <tromey@redhat.com>
+
+ PR java/26042:
+ * parse.y (java_reorder_fields): Reset superclass field's size as
+ well.
+
2006-03-28 Tom Tromey <tromey@redhat.com>
PR java/26390:
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 6b0bf76..118c66f 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 50b30af..9867c7a 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2006-03-30 Tom Tromey <tromey@redhat.com>
+
+ PR java/26042:
+ * testsuite/libjava.compile/pr26042.java: New file.
+
2006-03-29 Tom Tromey <tromey@redhat.com>
* 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 0000000..485b36a
--- /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 (); }
+}
+