diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 5d9ae79d2e1b260f4db29f8f9dae92f00dec8e69..c048dfada2ceb3201db8c191abd0dbbfa52f0eb2 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 507e9583e86ff90f4415a1eaddc49ab0de1cac62..620973745b973d4d38333e3fa89ee58e0c41ada1 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));