re PR c++/9054 (segfault on legal code with option -fdump-translation-unit)

PR c++/9054
	* class.c (layout_class_type): Set DECL_CONTEXT of type for base.
	* dump.c (cp_dump_tree, RECORD_TYPE): Deal with type for base types.

From-SVN: r60627
This commit is contained in:
Nathan Sidwell 2002-12-30 12:46:13 +00:00
parent 8b5d67e116
commit 5a5cccaa4e
2 changed files with 9 additions and 0 deletions

View File

@ -5161,6 +5161,7 @@ layout_class_type (tree t, tree *virtuals_p)
/* Record the base version of the type. */
CLASSTYPE_AS_BASE (t) = base_t;
TYPE_CONTEXT (base_t) = t;
}
else
CLASSTYPE_AS_BASE (t) = t;

View File

@ -265,6 +265,14 @@ cp_dump_tree (dump_info, t)
return 1;
}
/* Is it a type used as a base? */
if (TYPE_CONTEXT (t) && TREE_CODE (TYPE_CONTEXT (t)) == TREE_CODE (t)
&& CLASSTYPE_AS_BASE (TYPE_CONTEXT (t)) == t)
{
dump_child ("bfld", TYPE_CONTEXT (t));
return 1;
}
dump_child ("vfld", TYPE_VFIELD (t));
if (CLASSTYPE_TEMPLATE_SPECIALIZATION(t))
dump_string(di, "spec");