c++: better fixup_type_variants
fixup_type_variants was almost doing all that finish_struct needs. May as well make it do it all. gcc/cp/ * class.c (fixup_type_variants): Copy TYPE_SIZE and TYPE_SIZE_UINIT. (finish_struct): Call it.
This commit is contained in:
parent
9b837af463
commit
0cd58a9f09
|
@ -1967,6 +1967,9 @@ fixup_type_variants (tree t)
|
|||
/* Copy whatever these are holding today. */
|
||||
TYPE_VFIELD (variants) = TYPE_VFIELD (t);
|
||||
TYPE_FIELDS (variants) = TYPE_FIELDS (t);
|
||||
|
||||
TYPE_SIZE (variants) = TYPE_SIZE (t);
|
||||
TYPE_SIZE_UNIT (variants) = TYPE_SIZE_UNIT (t);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7610,12 +7613,7 @@ finish_struct (tree t, tree attributes)
|
|||
CLASSTYPE_NON_AGGREGATE (t) = 1;
|
||||
|
||||
/* Fix up any variants we've already built. */
|
||||
for (x = TYPE_NEXT_VARIANT (t); x; x = TYPE_NEXT_VARIANT (x))
|
||||
{
|
||||
TYPE_SIZE (x) = TYPE_SIZE (t);
|
||||
TYPE_SIZE_UNIT (x) = TYPE_SIZE_UNIT (t);
|
||||
TYPE_FIELDS (x) = TYPE_FIELDS (t);
|
||||
}
|
||||
fixup_type_variants (t);
|
||||
}
|
||||
else
|
||||
finish_struct_1 (t);
|
||||
|
|
Loading…
Reference in New Issue