OSDN Git Service

PR java/21418
authorrmathew <rmathew@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Sep 2005 13:34:28 +0000 (13:34 +0000)
committerrmathew <rmathew@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Sep 2005 13:34:28 +0000 (13:34 +0000)
* class.c (inherits_from_p): Try to lay out super class
if it is not already laid out.
(maybe_layout_super_class): Handle the case where SUPER_CLASS
is a NULL_TREE.

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

gcc/java/ChangeLog
gcc/java/class.c

index b629979..3cf82e3 100644 (file)
@@ -1,3 +1,11 @@
+2005-09-21  Ranjit Mathew  <rmathew@gcc.gnu.org>
+
+       PR java/21418
+       * class.c (inherits_from_p): Try to lay out super class
+       if it is not already laid out.
+       (maybe_layout_super_class): Handle the case where SUPER_CLASS
+       is a NULL_TREE.
+
 2005-09-18  James A. Morrison  <phython@gcc.gnu.org>
 
        * builtins.c (max_builtin, min_builtin, abs_builtin,
index 47ae336..b9848d3 100644 (file)
@@ -549,9 +549,11 @@ inherits_from_p (tree type1, tree type2)
     {
       if (type1 == type2)
        return 1;
+
       if (! CLASS_LOADED_P (type1))
        load_class (type1, 1);
-      type1 = CLASSTYPE_SUPER (type1);
+
+      type1 = maybe_layout_super_class (CLASSTYPE_SUPER (type1), type1);
     }
   return 0;
 }
@@ -2058,7 +2060,9 @@ push_super_field (tree this_class, tree super_class)
 static tree
 maybe_layout_super_class (tree super_class, tree this_class)
 {
-  if (TREE_CODE (super_class) == RECORD_TYPE)
+  if (!super_class)
+    return NULL_TREE;
+  else if (TREE_CODE (super_class) == RECORD_TYPE)
     {
       if (!CLASS_LOADED_P (super_class) && CLASS_FROM_SOURCE_P (super_class))
        safe_layout_class (super_class);