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.

Reply via email to