https://gcc.gnu.org/g:c6bb3a81db8bffd6df748b844904d3e3a9cea8a0
commit r16-8082-gc6bb3a81db8bffd6df748b844904d3e3a9cea8a0 Author: Saurabh Jha <[email protected]> Date: Thu Mar 12 11:57:26 2026 +0000 aarch64: mingw: Fix _ARM_PCS_AAPCS64 [PR122953] Windows platforms do not support the default procedure calling standard, AAPCS64. So _ARM_PCS_AAPCS64 should not be set for Windows targets. This fixes the setting of __ARM_PCS_AAPCS64 by making it conditional on non-Windows targets. PR target/122953 gcc/ChangeLog: * config/aarch64/aarch64-c.cc (TARGET_AARCH64_MS_ABI): Explicitly set it to 0 if not on mingw. (aarch64_define_unconditional_macros): Remove __ARM_PCS_AAPCS64 from here. (aarch64_update_cpp_builtins): Define __ARM_PCS_AAPCS64 if not on Windows ABI. --- Hey, Regression tested on aarch64-linux-gnu and found no regressions. Built for arch64-w64-mingw32, ran target dependent tests, and found no regressions. Ok for master? Thanks, Saurabh Diff: --- gcc/config/aarch64/aarch64-c.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/config/aarch64/aarch64-c.cc b/gcc/config/aarch64/aarch64-c.cc index a355cfdd1698..b2cc3e67f6da 100644 --- a/gcc/config/aarch64/aarch64-c.cc +++ b/gcc/config/aarch64/aarch64-c.cc @@ -37,6 +37,10 @@ #define builtin_define(TXT) cpp_define (pfile, TXT) #define builtin_assert(TXT) cpp_assert (pfile, TXT) +/* Not on Windows ABI unless explicitly set. */ +#ifndef TARGET_AARCH64_MS_ABI +#define TARGET_AARCH64_MS_ABI 0 +#endif static void aarch64_def_or_undef (bool def_p, const char *macro, cpp_reader *pfile) @@ -73,7 +77,6 @@ aarch64_define_unconditional_macros (cpp_reader *pfile) builtin_define ("__ARM_FEATURE_CLZ"); builtin_define ("__ARM_FEATURE_IDIV"); builtin_define ("__ARM_FEATURE_UNALIGNED"); - builtin_define ("__ARM_PCS_AAPCS64"); builtin_define_with_int_value ("__ARM_SIZEOF_WCHAR_T", WCHAR_TYPE_SIZE / 8); builtin_define ("__GCC_ASM_FLAG_OUTPUTS__"); @@ -147,6 +150,7 @@ aarch64_update_cpp_builtins (cpp_reader *pfile) aarch64_def_or_undef (TARGET_FLOAT, "__ARM_FEATURE_FMA", pfile); + aarch64_def_or_undef (!TARGET_AARCH64_MS_ABI, "__ARM_PCS_AAPCS64", pfile); if (TARGET_FLOAT) { builtin_define_with_int_value ("__ARM_FP", 0x0E);
