[PATCH] Don't use glibc <tgmath.h> when testing with Clang

Sam James sam@gentoo.org
Fri Dec 20 03:27:04 GMT 2024


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

> Clang has its own <tgmath.h> and doesn't use <tgmath.h> from glibc.  Pass
> "-I." to compiler only if $($(<F)-no-include-dot) are undefined.  Define
> it to yes for tgmath tests when testing with Clang.
>
> Signed-off-by: H.J. Lu <hjl.tools@gmail.com>

LGTM

> ---
>  Makeconfig       |  3 ++-
>  include/tgmath.h |  8 +++++++-
>  math/Makefile    | 24 ++++++++++++++++++------
>  3 files changed, 27 insertions(+), 8 deletions(-)
>
> diff --git a/Makeconfig b/Makeconfig
> index 04c43e80f7..f47ebb5499 100644
> --- a/Makeconfig
> +++ b/Makeconfig
> @@ -1036,7 +1036,8 @@ endif
>  # current directory.
>  +includes = -I$(..)include $(if $(subdir),$(objpfx:%/=-I%)) \
>  	    $(+sysdep-includes) $(includes) \
> -	    $(patsubst %/,-I%,$(..)) $(libio-include) -I. $(sysincludes)
> +	    $(patsubst %/,-I%,$(..)) $(libio-include) \
> +	    $(if $($(<F)-no-include-dot),,-I.) $(sysincludes)
>  
>  # Since libio has several internal header files, we use a -I instead
>  # of many little headers in the include directory.
> diff --git a/include/tgmath.h b/include/tgmath.h
> index 3a2c4a2b2d..1e81bcb1af 100644
> --- a/include/tgmath.h
> +++ b/include/tgmath.h
> @@ -1 +1,7 @@
> -#include <math/tgmath.h>
> +/* NB: Clang has its own <tgmath.h> and doesn't use <tgmath.h> from
> +   glibc.  */
> +#if defined _ISOMAC && defined __clang__
> +# include_next <tgmath.h>
> +#else
> +# include <math/tgmath.h>
> +#endif
> diff --git a/math/Makefile b/math/Makefile
> index 36fe5c2bd4..d262de8bee 100644
> --- a/math/Makefile
> +++ b/math/Makefile
> @@ -510,7 +510,6 @@ tests = \
>    $(tests-static) \
>    bug-nextafter \
>    bug-nexttoward \
> -  bug-tgmath1 \
>    test-ceil-except-2 \
>    test-femode \
>    test-femode-traps \
> @@ -548,15 +547,18 @@ tests = \
>    test-signgam-ullong \
>    test-signgam-ullong-init \
>    test-snan \
> -  test-tgmath \
> -  test-tgmath-int \
> -  test-tgmath-ret \
> -  test-tgmath2 \
>    test-trunc-except-2 \
>    tst-CMPLX \
>    tst-CMPLX2 \
>    tst-definitions \
>    # tests
> +tests-tgmath = \
> +  bug-tgmath1 \
> +  test-tgmath \
> +  test-tgmath-int \
> +  test-tgmath-ret \
> +  test-tgmath2 \
> +  # tests-tgmath
>  ifneq ($(config-cflags-signaling-nans),)
>  tests += \
>    test-fe-snans-always-signal \
> @@ -1026,7 +1028,9 @@ tgmath3-macros = \
>    ufromfpx \
>    # tgmath3-macros
>  tgmath3-macro-tests = $(addprefix test-tgmath3-,$(tgmath3-macros))
> -tests += $(tgmath3-macro-tests)
> +tests-tgmath += $(tgmath3-macro-tests)
> +tests += $(tests-tgmath)
> +
>  generated += $(addsuffix .c,$(tgmath3-macro-tests))
>  
>  $(tgmath3-macro-tests:%=$(objpfx)%.o): CFLAGS += -fno-builtin
> @@ -1043,6 +1047,14 @@ $(objpfx)test-tgmath3-macro-list.out: gen-tgmath-tests.py
>  	$(PYTHON) $< check-list $(tgmath3-macros) > $@; \
>  	$(evaluate-test)
>  
> +ifeq ($(have-test-clang),yes)
> +# NB: Clang has its own <tgmath.h> and doesn't use <tgmath.h> from glibc.
> +define no-include
> +$(1).c-no-include-dot = yes
> +endef
> +$(foreach m,$(tests-tgmath),$(eval $(call no-include,$(m))))
> +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


More information about the Libc-alpha mailing list