aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/java/ChangeLog7
-rw-r--r--gcc/java/class.c6
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 549a742..33c01d7 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,10 @@
+2005-10-12 Nathan Sidwell <nathan@codesourcery.com>
+ Wil Mahan <wmahan@gmail.com>
+
+ PR java/23620
+ * class.c (make_class): Create empty binfo here.
+ (set_super_info): Only create binfo if we have superclasses.
+
2005-10-03 Ranjit Mathew <rmathew@gcc.gnu.org>
PR java/24127
diff --git a/gcc/java/class.c b/gcc/java/class.c
index b9848d3..eb9ea71 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -319,6 +319,9 @@ make_class (void)
{
tree type;
type = make_node (RECORD_TYPE);
+ /* Unfortunately we must create the binfo here, so that class
+ loading works. */
+ TYPE_BINFO (type) = make_tree_binfo (0);
MAYBE_CREATE_TYPE_TYPE_LANG_SPECIFIC (type);
return type;
@@ -468,7 +471,8 @@ set_super_info (int access_flags, tree this_class,
if (super_class)
total_supers++;
- TYPE_BINFO (this_class) = make_tree_binfo (total_supers);
+ if (total_supers)
+ TYPE_BINFO (this_class) = make_tree_binfo (total_supers);
TYPE_VFIELD (this_class) = TYPE_VFIELD (object_type_node);
if (super_class)
{