From: Nathan Sidwell Date: Tue, 28 Jul 2020 15:49:13 +0000 (-0700) Subject: c++: better fixup_type_variants X-Git-Tag: upstream/12.2.0~14566 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0cd58a9f091b39c5e41b7954d6c4bd88f3567d49;p=platform%2Fupstream%2Fgcc.git 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. --- diff --git a/gcc/cp/class.c b/gcc/cp/class.c index ba96113..7a25d8f 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -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);