re PR java/2333 (ICE in mark_reference_fields)
authorAlexandre Petit-Bianco <apbianco@redhat.com>
Wed, 21 Mar 2001 23:50:29 +0000 (15:50 -0800)
committerAlexandre Petit-Bianco <apbianco@gcc.gnu.org>
Wed, 21 Mar 2001 23:50:29 +0000 (15:50 -0800)
2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>

* class.c (layout_class): Fixed push_super_field's second
argument. Fixes PR java/2333.
(jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
too early to lay innerclasses out.

(http://gcc.gnu.org/ml/gcc-patches/2001-03/msg01582.html)

From-SVN: r40719

gcc/java/ChangeLog
gcc/java/class.c
gcc/java/parse.y

index accbbc72f63d4102c8c3f981bcf42de923a6a915..6a23f8e6b7e4aad3af07c20eedcf3a8b94931aed 100644 (file)
@@ -1,3 +1,10 @@
+2001-03-21  Alexandre Petit-Bianco  <apbianco@redhat.com>
+
+       * class.c (layout_class): Fixed push_super_field's second
+       argument. Fixes PR java/2333.
+       (jdep_resolve_class): Reset TYPE_SIZE if `error_mark_node', it's
+       too early to lay innerclasses out.
+
 2001-03-20  Tom Tromey  <tromey@redhat.com>
 
        * lex.c (java_read_unicode): Only accept leading `u's.
index 6deb46e61d69c7b8fb36a80a1aa4b52cfe7256ac..c99dbaa262b9882bf9e1c90550b293f24288de42 100644 (file)
@@ -1693,7 +1693,7 @@ layout_class (this_class)
          return;
        }
       if (TYPE_SIZE (this_class) == NULL_TREE)
-       push_super_field (this_class, super_class);
+       push_super_field (this_class, maybe_super_class);
     }
 
   for (field = TYPE_FIELDS (this_class);
index 8d588f0f10a0d38dd67a5ea1eb32a11923afe128..d1adac6c3384874d1f3a0f22db381d8984d12b43 100644 (file)
@@ -5277,7 +5277,11 @@ jdep_resolve_class (dep)
     {
       tree inner = TREE_TYPE (decl);
       if (! CLASS_LOADED_P (inner))
-       safe_layout_class (inner);
+       {
+         safe_layout_class (inner);
+         if (TYPE_SIZE (inner) == error_mark_node)
+           TYPE_SIZE (inner) = NULL_TREE;
+       }
       check_inner_class_access (decl, JDEP_ENCLOSING (dep), JDEP_WFL (dep));
     }
   return decl;