From ea095e9aab05781cf7227af39727ee9f722950b0 Mon Sep 17 00:00:00 2001
From: Andrew Haley <aph@redhat.com>
Date: Tue, 27 Jan 2004 17:30:06 +0000
Subject: [PATCH] parse.y (check_interface_throws_clauses): Make sure
 class_decl has been loaded.

2004-01-27  Andrew Haley  <aph@redhat.com>

        java/13273
        * parse.y (check_interface_throws_clauses): Make sure class_decl
        has been loaded.

From-SVN: r76732
---
 gcc/java/ChangeLog |  6 ++++++
 gcc/java/parse.y   | 14 ++++++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 5d9ae79d2e1b..c048dfada2ce 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2004-01-27  Andrew Haley  <aph@redhat.com>
+
+	java/13273
+	* parse.y (check_interface_throws_clauses): Make sure class_decl
+	has been loaded.
+
 2004-01-22  Jeff Sturm  <jsturm@one-point.com>
 
 	PR java/13733
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 507e9583e86f..620973745b97 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -6485,10 +6485,20 @@ check_interface_throws_clauses (tree check_class_decl, tree class_decl)
 {
   for (; class_decl != NULL_TREE; class_decl = CLASSTYPE_SUPER (class_decl))
     {
-      tree bases = TYPE_BINFO_BASETYPES (class_decl);
-      int iface_len = TREE_VEC_LENGTH (bases) - 1;
+      tree bases;
+      int iface_len;
       int i;
 
+      if (! CLASS_LOADED_P (class_decl))
+	{
+	  if (CLASS_FROM_SOURCE_P (class_decl))
+	    safe_layout_class (class_decl);
+	  else
+	    load_class (class_decl, 1);
+	}
+
+      bases = TYPE_BINFO_BASETYPES (class_decl);
+      iface_len = TREE_VEC_LENGTH (bases) - 1;
       for (i = iface_len; i > 0; --i)
 	{
 	  tree interface = BINFO_TYPE (TREE_VEC_ELT (bases, i));
-- 
GitLab