On 6/19/19 9:28 AM, Jan Hubicka wrote:
Jason,
I also wonder if something like this would make sense:
* decl.c (build_clobber_this): Use original basetype if they
match.
Index: decl.c
===================================================================
--- decl.c (revision 272381)
+++ decl.c (working copy)
@@ -15210,7 +15210,11 @@ build_clobber_this ()
tree ctype = current_class_type;
if (!vbases)
- ctype = CLASSTYPE_AS_BASE (ctype);
+ {
+ if (!tree_int_cst_equal (TYPE_SIZE (ctype),
+ TYPE_SIZE (CLASSTYPE_AS_BASE (ctype))))
+ ctype = CLASSTYPE_AS_BASE (ctype);
+ }
tree clobber = build_clobber (ctype);
I have noticed we build a distinct as-base type in rather more cases
than strictly necessary. For instance when there's a member of
reference type or we have a non-trivial dtor.
(CLASSTYPE_NON_LAYOUT_POD_P gets set by a bunch of things that don't
affect ABI layout)
nathan
--
Nathan Sidwell