https://gcc.gnu.org/g:c3858c51a48c719f096e1425d1cfb13cc86a1c80

commit r16-5640-gc3858c51a48c719f096e1425d1cfb13cc86a1c80
Author: Lulu Cheng <[email protected]>
Date:   Mon Nov 24 17:03:49 2025 +0800

    LoongArch: fmv: Fix compilation errors when using glibc versions earlier 
than 2.38.
    
    The macros HWCAP_LOONGARCH_LSX and HWCAP_LOONGARCH_LASX were defined
    in glibc 2.38.  However, r16-5155 uses these two macros directly
    without checking whether they are defined.  This causes errors when
    compiling libgcc with glibc versions earlier than 2.38.
    
    gcc/ChangeLog:
    
            * doc/extend.texi: Remove the incorrect prompt message.
    
    libgcc/ChangeLog:
    
            * config/loongarch/cpuinfo.c (HWCAP_LOONGARCH_LSX): Define
            it if it is not defined.
            (HWCAP_LOONGARCH_LASX): Likewise.

Diff:
---
 gcc/doc/extend.texi               |  2 --
 libgcc/config/loongarch/cpuinfo.c | 11 +++++++++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index cc414313884b..11f6b02db366 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -5015,8 +5015,6 @@ from the code model of the callee function.
 Like attribute @code{target}, these options also reflect the behavior of
 similar command line options.
 
-Note that this attribute requires GLIBC2.38 and newer that support HWCAP.
-
 @code{string} can take the following values:
 
 @itemize @bullet
diff --git a/libgcc/config/loongarch/cpuinfo.c 
b/libgcc/config/loongarch/cpuinfo.c
index 293eb52f047a..a398bcbff122 100644
--- a/libgcc/config/loongarch/cpuinfo.c
+++ b/libgcc/config/loongarch/cpuinfo.c
@@ -73,6 +73,17 @@ __init_loongarch_features_resolver (void)
   if (CPUCFG3 & CPUCFG3_LD_SEQ_SA)
     setCPUFeature (FEAT_LD_SEQ_SA);
 
+/* The macros HWCAP_LOONGARCH_LSX and HWCAP_LOONGARCH_LASX are not defined
+   in glibc versions earlier than 2.38.  If these two macros are not defined,
+   define them with reference to asm/hwcap.h.  */
+#ifndef HWCAP_LOONGARCH_LSX
+#define HWCAP_LOONGARCH_LSX             (1 << 4)
+#endif
+
+#ifndef HWCAP_LOONGARCH_LASX
+#define HWCAP_LOONGARCH_LASX            (1 << 5)
+#endif
+
   /* LSX and LASX can be disabled/enabled by kernel: on some old kernel
      versions the vector context switch wasn't implemented and so they are
      always disabled, and on Linux >= 6.18-rc1 the user can pass simd=

Reply via email to