From c5d1abaa564d01348b4a7e96513895c1590e480a Mon Sep 17 00:00:00 2001
From: apbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Wed, 21 Mar 2001 23:50:29 +0000
Subject: [PATCH] 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)


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40719 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/java/ChangeLog | 7 +++++++
 gcc/java/class.c   | 2 +-
 gcc/java/parse.y   | 6 +++++-
 3 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index accbbc72f63d..6a23f8e6b7e4 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -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.
diff --git a/gcc/java/class.c b/gcc/java/class.c
index 6deb46e61d69..c99dbaa262b9 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -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);
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 8d588f0f10a0..d1adac6c3384 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -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;
-- 
GitLab