Sorry for the slow reply.
Evgeny Karpov writes:
> From: Zac Walker
> 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