From: Xi Ruoyao Date: Fri, 2 Jun 2023 18:25:44 +0000 (+0800) Subject: libatomic: x86_64: Always try ifunc X-Git-Tag: basepoints/gcc-15~8453 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db80262475d28ae074a2cda7a1a6c2ea525791b9;p=thirdparty%2Fgcc.git libatomic: x86_64: Always try ifunc We used to skip ifunc check when CX16 is available. But now we use CX16+AVX+Intel/AMD for the "perfect" 16b load implementation, so CX16 alone is not a sufficient reason not to use ifunc (see PR104688). This causes a subtle and annoying issue: when GCC is built with a higher -march= setting in CFLAGS_FOR_TARGET, ifunc is disabled and the worst (locked) implementation of __atomic_load_16 is always used. There seems no good way to check if the CPU is Intel or AMD from the built-in macros (maybe we can check every known model like __skylake, __bdver2, ..., but it will be very error-prune and require an update whenever we add the support for a new x86 model). The best thing we can do seems "always try ifunc" here. libatomic/ChangeLog: * configure.tgt: For x86_64, always set try_ifunc=yes. --- diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt index a92ae9e8309b..39dd5686f2e6 100644 --- a/libatomic/configure.tgt +++ b/libatomic/configure.tgt @@ -100,9 +100,7 @@ EOF fi cat > conftestx.c <