Hi!

This patch is one year old, but still needed, so: ping?

https://patchwork.sourceware.org/project/gcc/patch/[email protected]/

or
https://gcc.gnu.org/pipermail/gcc-patches/2025-January/674688.html

Thanks,

Christophe

On 1/29/25 09:04, Christophe Lyon wrote:
Enabling 'fp' on v8.1-m.main (either via +fp, +fp.dp or +mve.dp)
enables support for fp16 types (and registers _Float16 in C++).

As the g++.dg/cpp23/ext-floating13.C testcase shows, this pulls
typeinfo for _Float16 at link time, but a toolchain built using
t-rmprofile currently relies on v8-m.main+fp libraries for
v8.1-m.main+fp, and v8-m does not support fp16, leading to undefined
reference.

To avoid this, the patch adds -march=armv8.1-m.main+fp and
-march=armv8.1-m.main+fp.dp multilibs in addition to the existing
march=armv8.1-m.main+fp/march=armv8.1-m.main+mve.

Instead of matching v8-main.fp for +fp +dsp+fp +mve.fp +fp+mve
versions of v8.1-m.main, they now match v8.1-m.main+fp (+fp is of
course removed from the list of matches, since it matches itself).
The same applies to +fp.dp +dsp+fp.dp +fp.dp+mve +fp.dp+mve.fp.

        gcc/ChangeLog:

        PR target/116447
        * config/arm/t-rmprofile: Add -march=armv8.1-m.main+fp and
        -march=armv8.1-m.main+fp.dp multilibs.
---
  gcc/config/arm/t-rmprofile | 18 ++++++++++--------
  1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/gcc/config/arm/t-rmprofile b/gcc/config/arm/t-rmprofile
index 9cddaaf85ef..2097846b0c8 100644
--- a/gcc/config/arm/t-rmprofile
+++ b/gcc/config/arm/t-rmprofile
@@ -27,8 +27,8 @@
# Arch and FPU variants to build libraries with -MULTI_ARCH_OPTS_RM = march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7e-m+fp/march=armv7e-m+fp.dp/march=armv8-m.base/march=armv8-m.main/march=armv8-m.main+fp/march=armv8-m.main+fp.dp/march=armv8.1-m.main+mve/march=armv8.1-m.main+pacbti/march=armv8.1-m.main+pacbti+fp/march=armv8.1-m.main+pacbti+fp.dp/march=armv8.1-m.main+pacbti+mve
-MULTI_ARCH_DIRS_RM     = v6-m v7-m v7e-m v7e-m+fp v7e-m+dp v8-m.base v8-m.main 
v8-m.main+fp v8-m.main+dp v8.1-m.main+mve v8.1-m.main+pacbti 
v8.1-m.main+pacbti+fp v8.1-m.main+pacbti+dp v8.1-m.main+pacbti+mve
+MULTI_ARCH_OPTS_RM     = 
march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7e-m+fp/march=armv7e-m+fp.dp/march=armv8-m.base/march=armv8-m.main/march=armv8-m.main+fp/march=armv8-m.main+fp.dp/march=armv8.1-m.main+fp/march=armv8.1-m.main+fp.dp/march=armv8.1-m.main+mve/march=armv8.1-m.main+pacbti/march=armv8.1-m.main+pacbti+fp/march=armv8.1-m.main+pacbti+fp.dp/march=armv8.1-m.main+pacbti+mve
+MULTI_ARCH_DIRS_RM     = v6-m v7-m v7e-m v7e-m+fp v7e-m+dp v8-m.base v8-m.main 
v8-m.main+fp v8-m.main+dp v8.1-m.main+fp v8.1-m.main+dp v8.1-m.main+mve 
v8.1-m.main+pacbti v8.1-m.main+pacbti+fp v8.1-m.main+pacbti+dp 
v8.1-m.main+pacbti+mve
MULTI_ARCH_OPTS_RM += mbranch-protection=standard
  MULTI_ARCH_DIRS_RM    += bp
@@ -51,6 +51,8 @@ MULTILIB_REQUIRED     += 
mthumb/march=armv8-m.main+fp/mfloat-abi=hard
  MULTILIB_REQUIRED     += mthumb/march=armv8-m.main+fp/mfloat-abi=softfp
  MULTILIB_REQUIRED     += mthumb/march=armv8-m.main+fp.dp/mfloat-abi=hard
  MULTILIB_REQUIRED     += mthumb/march=armv8-m.main+fp.dp/mfloat-abi=softfp
+MULTILIB_REQUIRED      += mthumb/march=armv8.1-m.main+fp/mfloat-abi=hard
+MULTILIB_REQUIRED      += mthumb/march=armv8.1-m.main+fp.dp/mfloat-abi=hard
  MULTILIB_REQUIRED     += mthumb/march=armv8.1-m.main+mve/mfloat-abi=hard
MULTILIB_REQUIRED += mthumb/march=armv8.1-m.main+pacbti/mbranch-protection=standard/mfloat-abi=soft
@@ -86,16 +88,16 @@ MULTILIB_MATCHES    += 
march?armv8-m.main=mlibarch?armv8.1-m.main+dsp
  MULTILIB_REUSE                += 
mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.soft
  MULTILIB_REUSE                += 
mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.softfp
-v8_1m_sp_variants = +fp +dsp+fp +mve.fp +fp+mve
-v8_1m_dp_variants = +fp.dp +dsp+fp.dp +fp.dp+mve +fp.dp+mve.fp
+v8_1m_sp_variants = +dsp+fp +mve.fp +fp+mve
+v8_1m_dp_variants = +dsp+fp.dp +fp.dp+mve +fp.dp+mve.fp
-# Map all v8.1-m.main FP sp variants down to v8-m.
+# Map all v8.1-m.main FP sp variants down to v8.1-m.main+fp.
  MULTILIB_MATCHES += $(foreach FP, $(v8_1m_sp_variants), \
-                            march?armv8-m.main+fp=mlibarch?armv8.1-m.main$(FP))
+                            
march?armv8.1-m.main+fp=mlibarch?armv8.1-m.main$(FP))
-# Map all v8.1-m.main FP dp variants down to v8-m.
+# Map all v8.1-m.main FP dp variants down to v8.1-m.main+fp.dp.
  MULTILIB_MATCHES += $(foreach FP, $(v8_1m_dp_variants), \
-                            
march?armv8-m.main+fp.dp=mlibarch?armv8.1-m.main$(FP))
+                            
march?armv8.1-m.main+fp.dp=mlibarch?armv8.1-m.main$(FP))
# Map all mbranch-protection values other than 'none' to 'standard'.
  MULTILIB_MATCHES      += mbranch-protection?standard=mbranch-protection?bti

Reply via email to