aboutsummaryrefslogtreecommitdiff
path: root/libatomic
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-01-15 13:12:59 +0100
committerJakub Jelinek <jakub@redhat.com>2021-01-15 13:16:42 +0100
commit0411ae7f08e0f5a8b02ff313d26d27a0f6d1bb34 (patch)
treeb31b94f7c925f2c9c84e6a6c23017c59ebeaa574 /libatomic
parentbfab355012ca0f5219da8beb04f2fdaf757d34b7 (diff)
downloadgcc-0411ae7f08e0f5a8b02ff313d26d27a0f6d1bb34.zip
gcc-0411ae7f08e0f5a8b02ff313d26d27a0f6d1bb34.tar.gz
gcc-0411ae7f08e0f5a8b02ff313d26d27a0f6d1bb34.tar.bz2
libatomic, libgomp, libitc: Fix bootstrap [PR70454]
The recent changes to error on mixing -march=i386 and -fcf-protection broke bootstrap. This patch changes lib{atomic,gomp,itm} configury, so that it only adds -march=i486 to flags if really needed (i.e. when 486 or later isn't on by default already). Similarly, it will not use ifuncs if -mcx16 (or -march=i686 for 32-bit) is on by default. 2021-01-15 Jakub Jelinek <jakub@redhat.com> PR target/70454 libatomic/ * configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to be added through preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. Determine if try_ifunc is needed based on preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 or __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8. libgomp/ * configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to be added through preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. libitm/ * configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to be added through preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4.
Diffstat (limited to 'libatomic')
-rw-r--r--libatomic/configure.tgt56
1 files changed, 32 insertions, 24 deletions
diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt
index 2f24817..670b0d7 100644
--- a/libatomic/configure.tgt
+++ b/libatomic/configure.tgt
@@ -81,32 +81,40 @@ case "${target_cpu}" in
ARCH=sparc
;;
- i[3456]86)
- case " ${CC} ${CFLAGS} " in
- *" -m64 "*|*" -mx32 "*)
- ;;
- *)
- if test -z "$with_arch"; then
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
- XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
- fi
- esac
- ARCH=x86
- # ??? Detect when -march=i686 is already enabled.
- try_ifunc=yes
- ;;
- x86_64)
- case " ${CC} ${CFLAGS} " in
- *" -m32 "*)
+ i[3456]86 | x86_64)
+ cat > conftestx.c <<EOF
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+#error need -march=i486
+#endif
+EOF
+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
+ :
+ else
+ if test "${target_cpu}" = x86_64; then
XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
- XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
- ;;
- *)
- ;;
- esac
+ else
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
+ fi
+ XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
+ fi
+ cat > conftestx.c <<EOF
+#ifdef __x86_64__
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
+#error need -mcx16
+#endif
+#else
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
+#error need -march=i686
+#endif
+#endif
+EOF
+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
+ try_ifunc=no
+ else
+ try_ifunc=yes
+ fi
+ rm -f conftestx.c
ARCH=x86
- # ??? Detect when -mcx16 is already enabled.
- try_ifunc=yes
;;
*) ARCH="${target_cpu}" ;;