On Fri, 15 Jan 2021, Jakub Jelinek wrote:

> On Thu, Jan 14, 2021 at 04:08:20PM -0800, H.J. Lu wrote:
> > Here is the updated patch.  OK for master?
> 
> Here is my version of the entire patch.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux and additionally
> tested with i686-linux --with-arch=i386 and x86_64-linux --with-arch_32=i386
> (non-bootstrap) builds to verify -march=i486 additions in that case.
> 
> Ok for trunk?

OK.

Thanks,
Richard.

> 2021-01-15  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR target/70454
>       * 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.
> 
>       * 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.
> 
>       * 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.
> 
> --- libatomic/configure.tgt.jj        2021-01-15 11:08:13.659545929 +0100
> +++ libatomic/configure.tgt   2021-01-15 11:21:09.071740967 +0100
> @@ -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}" ;;
> --- libgomp/configure.tgt.jj  2021-01-15 11:08:13.659545929 +0100
> +++ libgomp/configure.tgt     2021-01-15 11:20:54.809902917 +0100
> @@ -73,28 +73,23 @@ if test x$enable_linux_futex = xyes; the
>       ;;
>  
>      # Note that bare i386 is not included here.  We need cmpxchg.
> -    i[456]86-*-linux*)
> +    i[456]86-*-linux* | x86_64-*-linux*)
>       config_path="linux/x86 linux posix"
> -     case " ${CC} ${CFLAGS} " in
> -       *" -m64 "*|*" -mx32 "*)
> -         ;;
> -       *)
> -         if test -z "$with_arch"; then
> -           XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
> -         fi
> -     esac
> -     ;;
> -
> -    # Similar jiggery-pokery for x86_64 multilibs, except here we
> -    # can't rely on the --with-arch configure option, since that
> -    # applies to the 64-bit side.
> -    x86_64-*-linux*)
> -     config_path="linux/x86 linux posix"
> -     case " ${CC} ${CFLAGS} " in
> -       *" -m32 "*)
> +     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"
> -         ;;
> -     esac
> +       else
> +         XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
> +       fi
> +     fi
> +     rm -f conftestx.c
>       ;;
>  
>      # Note that sparcv7 and sparcv8 is not included here.  We need cas.
> --- libitm/configure.tgt.jj   2021-01-15 11:08:13.659545929 +0100
> +++ libitm/configure.tgt      2021-01-15 11:21:28.611519095 +0100
> @@ -59,16 +59,23 @@ case "${target_cpu}" in
>  
>    arm*)              ARCH=arm ;;
>  
> -  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
> +  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"
> +       else
> +         XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
> +       fi
> +       XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
> +     fi
> +     rm -f conftestx.c
>       XCFLAGS="${XCFLAGS} -mrtm"
>       ARCH=x86
>       ;;
> @@ -103,16 +110,6 @@ case "${target_cpu}" in
>       ARCH=sparc
>       ;;
>  
> -  x86_64)
> -     case " ${CC} ${CFLAGS} " in
> -       *" -m32 "*)
> -         XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
> -         XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
> -         ;;
> -     esac
> -     XCFLAGS="${XCFLAGS} -mrtm"
> -     ARCH=x86
> -     ;;
>    s390|s390x)
>       XCFLAGS="${XCFLAGS} -mzarch -mhtm"
>       ARCH=s390
> 
> 
>       Jakub
> 
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)

Reply via email to