diff options
-rw-r--r-- | gcc/java/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/java/class.c | 6 |
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) { |