diff options
author | Jason Merrill <jason@redhat.com> | 2019-06-24 10:34:35 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2019-06-24 10:34:35 -0400 |
commit | c3337b44c40dd1545e00034cb8e1ae1c0dae0fa6 (patch) | |
tree | 6953d615a801d5850ae540a1655ee62259f6d18a | |
parent | a3c8d7fbe29d4ab60cc46196a1376854734a4f8d (diff) | |
download | gcc-c3337b44c40dd1545e00034cb8e1ae1c0dae0fa6.zip gcc-c3337b44c40dd1545e00034cb8e1ae1c0dae0fa6.tar.gz gcc-c3337b44c40dd1545e00034cb8e1ae1c0dae0fa6.tar.bz2 |
Don't use a separate CLASSTYPE_AS_BASE if it's the same size.
* class.c (layout_class_type): Don't use a separate
CLASSTYPE_AS_BASE if it's the same size.
From-SVN: r272618
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/class.c | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index f47df48..efb6c3d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2019-06-24 Jason Merrill <jason@redhat.com> + + * class.c (layout_class_type): Don't use a separate + CLASSTYPE_AS_BASE if it's the same size. + 2019-06-23 Marek Polacek <polacek@redhat.com> * call.c (convert_default_arg): Use DEFERRED_PARSE instead of diff --git a/gcc/cp/class.c b/gcc/cp/class.c index de37e43..e0df9ef 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -6453,6 +6453,12 @@ layout_class_type (tree t, tree *virtuals_p) /* Let the back end lay out the type. */ finish_record_layout (rli, /*free_p=*/true); + /* If we didn't end up needing an as-base type, don't use it. */ + if (CLASSTYPE_AS_BASE (t) != t + && tree_int_cst_equal (TYPE_SIZE (t), + TYPE_SIZE (CLASSTYPE_AS_BASE (t)))) + CLASSTYPE_AS_BASE (t) = t; + if (TYPE_SIZE_UNIT (t) && TREE_CODE (TYPE_SIZE_UNIT (t)) == INTEGER_CST && !TREE_OVERFLOW (TYPE_SIZE_UNIT (t)) |