OSDN Git Service

gcc/java
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 Mar 2006 16:39:17 +0000 (16:39 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 30 Mar 2006 16:39:17 +0000 (16:39 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112540 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/parse.y
libjava/ChangeLog
libjava/testsuite/libjava.compile/pr26042.java [new file with mode: 0644]

index 826d608..64fea4a 100644 (file)
@@ -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:
index 6b0bf76..118c66f 100644 (file)
@@ -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;
          }
index 50b30af..9867c7a 100644 (file)
@@ -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 (file)
index 0000000..485b36a
--- /dev/null
@@ -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 (); }
+}
+