[PATCH 12/39] Add test-config-cflags-float-store for -ffloat-store

Sam James sam@gentoo.org
Sun Dec 22 04:25:33 GMT 2024


"H.J. Lu" <hjl.tools@gmail.com> writes:

> Clang doesn't support -ffloat-store:
>
> clang: error: optimization flag '-ffloat-store' is not supported [-Werror,-Wignored-optimization-argument]
>
> Define test-config-cflags-float-store for -ffloat-store and use it in
> math/Makefile for testing.
>

Reviewed-by: Sam James <sam@gentoo.org>

> Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
> ---
>  configure     | 33 +++++++++++++++++++++++++++++++++
>  configure.ac  |  9 +++++++++
>  math/Makefile |  6 ++++--
>  3 files changed, 46 insertions(+), 2 deletions(-)
>
> diff --git a/configure b/configure
> index 1eb2d1e7e9..32e817030c 100755
> --- a/configure
> +++ b/configure
> @@ -7681,6 +7681,39 @@ config_vars="$config_vars
>  config-cflags-signaling-nans = $libc_cv_cc_signaling_nans"
>  
>  
> +
> +
> +saved_CC="$CC"
> +CC="$TEST_CC"
> +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -ffloat-store in testing" >&5
> +printf %s "checking for -ffloat-store in testing... " >&6; }
> +if test ${libc_cv_test_cc_float_store+y}
> +then :
> +  printf %s "(cached) " >&6
> +else case e in #(
> +  e) if { ac_try='${CC-cc} -Werror -ffloat-store -xc /dev/null -S -o /dev/null'
> +  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
> +  (eval $ac_try) 2>&5
> +  ac_status=$?
> +  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
> +  test $ac_status = 0; }; }
> +then :
> +  libc_cv_test_cc_float_store="-ffloat-store"
> +else case e in #(
> +  e) libc_cv_test_cc_float_store= ;;
> +esac
> +fi ;;
> +esac
> +fi
> +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_test_cc_float_store" >&5
> +printf "%s\n" "$libc_cv_test_cc_float_store" >&6; }
> +
> +CC="$saved_CC"
> +
> +
> +config_vars="$config_vars
> +test-config-cflags-float-store = $libc_cv_test_cc_float_store"
> +
>  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC accepts -fno-tree-loop-distribute-patterns with \
>  __attribute__ ((__optimize__))" >&5
>  printf %s "checking if $CC accepts -fno-tree-loop-distribute-patterns with \
> diff --git a/configure.ac b/configure.ac
> index 9f72a2a0ae..39c3eb94a6 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -1498,6 +1498,15 @@ LIBC_CONFIG_VAR([config-cflags-signaling-nans],
>  		[$libc_cv_cc_signaling_nans])
>  AC_SUBST(libc_cv_test_cc_signaling_nans)
>  
> +dnl Determine if TEST_CC supports -ffloat-store.
> +LIBC_TRY_TEST_CC_OPTION([for -ffloat-store],
> +  [-Werror -ffloat-store],
> +  libc_cv_test_cc_float_store,
> +  [libc_cv_test_cc_float_store="-ffloat-store"],
> +  [libc_cv_test_cc_float_store=])
> +LIBC_CONFIG_VAR([test-config-cflags-float-store],
> +		[$libc_cv_test_cc_float_store])
> +
>  AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
>  __attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
>  cat > conftest.c <<EOF
> diff --git a/math/Makefile b/math/Makefile
> index a9f29d6b5b..9f8024c86c 100644
> --- a/math/Makefile
> +++ b/math/Makefile
> @@ -1062,7 +1062,8 @@ endif
>  
>  libm-test-fast-math-cflags = -fno-builtin -D__FAST_MATH__ -DTEST_FAST_MATH
>  libm-test-vec-cflags = $(libm-test-fast-math-cflags) -fno-inline \
> -		       -ffloat-store -D_OPENMP=201307 -Wno-unknown-pragmas
> +		       $(test-config-cflags-float-store) \
> +		       -D_OPENMP=201307 -Wno-unknown-pragmas
>  
>  CFLAGS-test-double-vlen4-wrappers.c += $(double-vlen4-arch-ext-cflags)
>  
> @@ -1078,7 +1079,8 @@ CFLAGS-test-float-vlen16-wrappers.c += $(float-vlen16-arch-ext-cflags)
>  # raise spurious exceptions for sNaNs, but also do not test for
>  # exceptions.  Thus both versions of the classification macros are
>  # validated.
> -libm-test-no-inline-cflags = -fno-inline -ffloat-store -fno-builtin \
> +libm-test-no-inline-cflags = -fno-inline -fno-builtin \
> +			     $(test-config-cflags-float-store) \
>  			     $(config-cflags-signaling-nans)
>  CFLAGS-test-tgmath.c += -fno-builtin
>  # The following testcase uses very long lines (>3 million), so it may take a


More information about the Libc-alpha mailing list