mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-04 09:14:04 +08:00
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:
parent
8b5d67e116
commit
5a5cccaa4e
@ -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;
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user