Sorry for the slow reply. Evgeny Karpov <evgeny.kar...@microsoft.com> writes: > From: Zac Walker <zacwal...@microsoft.com> > Date: Fri, 1 Mar 2024 01:45:13 +0100 > Subject: [PATCH v2 02/13] aarch64: The aarch64-w64-mingw32 target implements > the MS ABI > > Two ABIs for aarch64 have been defined for different platforms. > > gcc/ChangeLog: > > * config/aarch64/aarch64-opts.h (enum aarch64_calling_abi): > Define two ABIs. > --- > gcc/config/aarch64/aarch64-opts.h | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/gcc/config/aarch64/aarch64-opts.h > b/gcc/config/aarch64/aarch64-opts.h > index a05c0d3ded1..52c9e4596d6 100644 > --- a/gcc/config/aarch64/aarch64-opts.h > +++ b/gcc/config/aarch64/aarch64-opts.h > @@ -131,4 +131,11 @@ enum aarch64_early_ra_scope { > AARCH64_EARLY_RA_NONE > }; > > +/* Available call ABIs. */ > +enum aarch64_calling_abi > +{ > + AARCH64_CALLING_ABI_EABI, > + AARCH64_CALLING_ABI_MS > +}; > + > #endif
Thanks for removing the MS_ABI uses. However, I'm still a bit uneasy about this. We already have a way of categorising ABIs (arm_pcs) and it's not clear how this new enum would interact with it. We also have infrastructure for recording the arm_pcs for each call, including in RTL insns. Would we need to do the same for this classification? It seems like the enum is currently unused. At least, I was able to build successfully with: diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h index 52c9e4596d6..a05c0d3ded1 100644 --- a/gcc/config/aarch64/aarch64-opts.h +++ b/gcc/config/aarch64/aarch64-opts.h @@ -131,11 +131,4 @@ enum aarch64_early_ra_scope { AARCH64_EARLY_RA_NONE }; -/* Available call ABIs. */ -enum aarch64_calling_abi -{ - AARCH64_CALLING_ABI_EABI, - AARCH64_CALLING_ABI_MS -}; - #endif diff --git a/gcc/config/aarch64/cygming.h b/gcc/config/aarch64/cygming.h index 2f239c42a89..902539763bd 100644 --- a/gcc/config/aarch64/cygming.h +++ b/gcc/config/aarch64/cygming.h @@ -43,9 +43,6 @@ still needed for compilation. */ #define GENERAL_REGNO_P(N) 0 #define SEH_MAX_FRAME_SIZE 0 -#undef DEFAULT_ABI -#define DEFAULT_ABI AARCH64_CALLING_ABI_MS - #undef TARGET_PECOFF #define TARGET_PECOFF 1 diff --git a/gcc/config/mingw/mingw32.h b/gcc/config/mingw/mingw32.h index 040c3e1e521..08f1b5f0696 100644 --- a/gcc/config/mingw/mingw32.h +++ b/gcc/config/mingw/mingw32.h @@ -19,9 +19,7 @@ along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>. */ #undef DEFAULT_ABI -#if defined (TARGET_AARCH64_MS_ABI) -# define DEFAULT_ABI AARCH64_CALLING_ABI_MS -#else +#if !defined (TARGET_AARCH64_MS_ABI) # define DEFAULT_ABI MS_ABI #endif Would you be happy with that for now? We can then revisit this later when the information is needed. Thanks, Richard