在 2025/12/18 下午3:13, WANG Xuerui 写道:
From: WANG Xuerui <[email protected]>

These all-caps built-in macros, while defined in the 2022.01.13 version
of the original *LoongArch Toolchain Conventions* document [1], are
deprecated since version 2023.04.20 [2] by [3], and since the recent
*Software Development and Build Convention for LoongArch Architectures*
document was released in July 2023, they have completely disappeared.
Now that it is nearing the end of 2025 and a new LoongArch target is
added, better not include the cruft for not deviating from the official
specs, and a cleaner ecosystem.

I agree with you.

Thanks!


[1]: 
https://github.com/loongson/LoongArch-Documentation/blob/2022.01.13/docs/LoongArch-toolchain-conventions-EN.adoc#cc-preprocessor-definitions
[2]: 
https://github.com/loongson/LoongArch-Documentation/blob/2023.04.20/docs/LoongArch-toolchain-conventions-EN.adoc#cc-preprocessor-built-in-macro-definitions
[3]: https://github.com/loongson/LoongArch-Documentation/pull/28
[4]: 
https://github.com/loongson/la-softdev-convention/blob/v0.1/la-softdev-convention.adoc#83-architecture-related-cc-pre-defined-macros

gcc/ChangeLog:

        * config/loongarch/loongarch-c.cc
        (loongarch_define_unconditional_macros): Do not define legacy
        compatibility macros for LA32.
        (loongarch_update_cpp_builtins): Ditto.

Signed-off-by: WANG Xuerui <[email protected]>
---
  gcc/config/loongarch/loongarch-c.cc | 35 ++++++++++++++++++-----------
  1 file changed, 22 insertions(+), 13 deletions(-)

diff --git a/gcc/config/loongarch/loongarch-c.cc 
b/gcc/config/loongarch/loongarch-c.cc
index 6e2f8f43818..b91ba8dd73d 100644
--- a/gcc/config/loongarch/loongarch-c.cc
+++ b/gcc/config/loongarch/loongarch-c.cc
@@ -79,12 +79,15 @@ loongarch_define_unconditional_macros (cpp_reader *pfile)
    builtin_define ("__builtin_infq=__builtin_inff128");
    builtin_define ("__builtin_huge_valq=__builtin_huge_valf128");
- /* Native Data Sizes. */
-  builtin_define_with_int_value ("_LOONGARCH_SZINT", INT_TYPE_SIZE);
-  builtin_define_with_int_value ("_LOONGARCH_SZLONG", LONG_TYPE_SIZE);
-  builtin_define_with_int_value ("_LOONGARCH_SZPTR", POINTER_SIZE);
-  builtin_define_with_int_value ("_LOONGARCH_FPSET", 32);
-  builtin_define_with_int_value ("_LOONGARCH_SPFPSET", 32);
+  /* Legacy compatibility macros for native data sizes.  */
+  if (TARGET_ABI_LP64)
+    {
+      builtin_define_with_int_value ("_LOONGARCH_SZINT", INT_TYPE_SIZE);
+      builtin_define_with_int_value ("_LOONGARCH_SZLONG", LONG_TYPE_SIZE);
+      builtin_define_with_int_value ("_LOONGARCH_SZPTR", POINTER_SIZE);
+      builtin_define_with_int_value ("_LOONGARCH_FPSET", 32);
+      builtin_define_with_int_value ("_LOONGARCH_SPFPSET", 32);
+    }
  }
static void
@@ -100,13 +103,19 @@ loongarch_update_cpp_builtins (cpp_reader *pfile)
    builtin_define_with_value ("__loongarch_tune",
                             loongarch_tune_strings[la_target.cpu_tune], 1);
- builtin_undef ("_LOONGARCH_ARCH");
-  builtin_define_with_value ("_LOONGARCH_ARCH",
-                            loongarch_arch_strings[la_target.cpu_arch], 1);
-
-  builtin_undef ("_LOONGARCH_TUNE");
-  builtin_define_with_value ("_LOONGARCH_TUNE",
-                            loongarch_tune_strings[la_target.cpu_tune], 1);
+  /* Legacy compatibility macros for arch/tune info.  */
+  if (TARGET_64BIT)
+    {
+      builtin_undef ("_LOONGARCH_ARCH");
+      builtin_define_with_value ("_LOONGARCH_ARCH",
+                                loongarch_arch_strings[la_target.cpu_arch],
+                                1);
+
+      builtin_undef ("_LOONGARCH_TUNE");
+      builtin_define_with_value ("_LOONGARCH_TUNE",
+                                loongarch_tune_strings[la_target.cpu_tune],
+                                1);
+    }
builtin_undef ("__loongarch_double_float");
    builtin_undef ("__loongarch_single_float");

Reply via email to