Evgeny Karpov writes:
> This patch extends the aarch64 attributes list with the selectany
> attribute for the aarch64-w64-mingw32 target and reuses the mingw
> implementation to handle it.
>
> * config/aarch64/aarch64.cc:
> Extend the aarch64 attributes list.
> * config/aarch64/cygming.h (SUBTARGET_ATTRIBUTE_TABLE):
> Define the selectany attribute.
Now that TARGET_ATTRIBUTE_TABLE is an array, it should in principle
be possible to define the attribute in winnt.cc and so avoid
duplicating the table entry. That'd be a separate clean-up though.
I agree that for this series we should stick with the current approach.
So the patch is ok, thanks.
Richard
> ---
> gcc/config/aarch64/aarch64.cc | 5 -
> gcc/config/aarch64/cygming.h | 3 +++
> 2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
> index c763a8a6298..19205927430 100644
> --- a/gcc/config/aarch64/aarch64.cc
> +++ b/gcc/config/aarch64/aarch64.cc
> @@ -855,7 +855,10 @@ static const attribute_spec aarch64_gnu_attributes[] =
> NULL },
>{ "Advanced SIMD type", 1, 1, false, true, false, true, NULL, NULL },
>{ "SVE type",3, 3, false, true, false, true, NULL, NULL
> },
> - { "SVE sizeless type", 0, 0, false, true, false, true, NULL, NULL }
> + { "SVE sizeless type", 0, 0, false, true, false, true, NULL, NULL },
> +#ifdef SUBTARGET_ATTRIBUTE_TABLE
> + SUBTARGET_ATTRIBUTE_TABLE
> +#endif
> };
>
> static const scoped_attribute_specs aarch64_gnu_attribute_table =
> diff --git a/gcc/config/aarch64/cygming.h b/gcc/config/aarch64/cygming.h
> index 0d048879311..76623153080 100644
> --- a/gcc/config/aarch64/cygming.h
> +++ b/gcc/config/aarch64/cygming.h
> @@ -154,6 +154,9 @@ still needed for compilation. */
> flag_stack_check = STATIC_BUILTIN_STACK_CHECK; \
>} while (0)
>
> +#define SUBTARGET_ATTRIBUTE_TABLE \
> + { "selectany", 0, 0, true, false, false, false, \
> +mingw_handle_selectany_attribute, NULL }
>
> #define SUPPORTS_ONE_ONLY 1