* except.c (push_eh_info): Pass the number of fields - 1 down, not
the exact number of fields.
cuz in finish_builtin_type, its comment sez
LEN is the number of elements
in FIELDS minus one, or put another way, it is the maximum subscript
used in FIELDS.
and its code does
for (i = 0; i < len; i++)
{
layout_type (TREE_TYPE (fields[i]));
DECL_FIELD_CONTEXT (fields[i]) = type;
TREE_CHAIN (fields[i]) = fields[i+1];
}
DECL_FIELD_CONTEXT (fields[i]) = type;
DECL_CLASS_CONTEXT (fields[i]) = type;
thus expecting the final ones to be fields[4], not fields[5] (which is
the actual size from 0, not the last field member)
From-SVN: r16257
+1997-10-31 Brendan Kehoe <brendan@lisa.cygnus.com>
+
+ * except.c (push_eh_info): Pass the number of fields - 1 down, not
+ the exact number of fields.
+
Fri Oct 31 01:47:57 1997 Jason Merrill <jason@yorick.cygnus.com>
Support for nested exceptions.
boolean_type_node);
fields[4] = build_lang_field_decl (FIELD_DECL, get_identifier ("next"),
build_pointer_type (t));
- finish_builtin_type (t, "cp_eh_info", fields, 5, ptr_type_node);
+ /* N.B.: The fourth field LEN is expected to be
+ the number of fields - 1, not the total number of fields. */
+ finish_builtin_type (t, "cp_eh_info", fields, 4, ptr_type_node);
t = build_pointer_type (t);
/* And now the function. */