diff mbox series

libatomic, libgomp, libitc: Fix bootstrap [PR70454]

Message ID 20210115115432.GG1034503@tucnak
State New
Headers show
Series libatomic, libgomp, libitc: Fix bootstrap [PR70454] | expand

Commit Message

Jakub Jelinek Jan. 15, 2021, 11:54 a.m. UTC
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?

2021-01-15  Jakub Jelinek  <jakub@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.



	Jakub

Comments

Richard Biener Jan. 15, 2021, 12:07 p.m. UTC | #1
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  <jakub@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
> 
>
H.J. Lu Jan. 15, 2021, 12:35 p.m. UTC | #2
On Fri, Jan 15, 2021 at 4:07 AM Richard Biener <rguenther@suse.de> wrote:
>
> 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.
diff mbox series

Patch

--- 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