aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorXi Ruoyao <xry111@xry111.site>2023-06-03 02:25:44 +0800
committerXi Ruoyao <xry111@xry111.site>2023-06-10 21:43:56 +0800
commitdb80262475d28ae074a2cda7a1a6c2ea525791b9 (patch)
treee1f157f75cd54cbd84aa6a013ab7c96d8e96a269 /gcc
parent39adc5eebd61fd276f3f1ef9d7228756a35bd0cb (diff)
downloadgcc-db80262475d28ae074a2cda7a1a6c2ea525791b9.zip
gcc-db80262475d28ae074a2cda7a1a6c2ea525791b9.tar.gz
gcc-db80262475d28ae074a2cda7a1a6c2ea525791b9.tar.bz2
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.
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions