https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80986
--- Comment #2 from linzj <manjian2006 at gmail dot com> ---
I have found the cause of this bug.
In 5.3, the function strip_typedefs only use
result = cp_build_type_attribute_variant (result, TYPE_ATTRIBUTES (t));
but in 6.3 remove_attributes prediction get invovled:
if (TYPE_ATTRIBUTES (t))
{
if (remove_attributes)
result = apply_identity_attributes (result, TYPE_ATTRIBUTES (t),
remove_attributes);
else
result = cp_build_type_attribute_variant (result, TYPE_ATTRIBUTES (t));
}
and unfortunately the pcs attribute is declared as
{ "pcs", 1, 1, false, true, true, arm_handle_pcs_attribute,
false },
which affects_type_identity field is set to false, cause
apply_identity_attributes
drop this attribute.