Message ID | PR3PR83MB0425AC57EFB76EF206A4385AF80E2@PR3PR83MB0425.EURPRD83.prod.outlook.com |
---|---|
State | New |
Headers | show |
Series | Add DLL import/export implementation to AArch64 | expand |
Evgeny Karpov <Evgeny.Karpov@microsoft.com> 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
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