This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Remove TEST_IFUNC, tests-ifunc and *-ifunc.c tests


On 25 November 2014 at 23:34, Joseph Myers <joseph@codesourcery.com> wrote:
> TEST_IFUNC is only tested in two headers, bench-string.h and
> test-string.h, after it gets defined by those headers, and it never
> gets undefined.
>
> Thus no defines of TEST_IFUNC are needed, and the *-ifunc.c tests that
> just define TEST_IFUNC and include other tests are also redundant, as
> is the code to remove $(tests-ifunc) and $(xtests-ifunc) conditionally
> from tests and xtests.  This patch removes the useless defines and
> tests of TEST_IFUNC and the associated useless tests and makefile
> code.  It thereby fixes a series of warnings
> "../string/test-string.h:21:0: warning: "TEST_IFUNC" redefined" where
> test-string.h defines TEST_IFUNC to empty, other files define it to 1
> and this produces warnings.
>
> Tested for x86_64.
>
> 2014-11-25  Joseph Myers  <joseph@codesourcery.com>
>
>         * debug/test-stpcpy_chk-ifunc.c: Remove file.
>         * debug/test-strcpy_chk-ifunc.c: Likewise.
>         * wcsmbs/test-wcschr-ifunc.c: Likewise.
>         * wcsmbs/test-wcscmp-ifunc.c: Likewise.
>         * wcsmbs/test-wcscpy-ifunc.c: Likewise.
>         * wcsmbs/test-wcslen-ifunc.c: Likewise.
>         * wcsmbs/test-wcsrchr-ifunc.c: Likewise.
>         * wcsmbs/test-wmemcmp-ifunc.c: Likewise.
>         * Rules [$(multi-arch) = no] (tests): Do not filter out
>         $(tests-ifunc).
>         [$(multi-arch) = no] (xtests): Do not filter out $(xtests-ifunc).
>         * debug/Makefile (tests-ifunc): Remove variable.
>         (tests): Do not add $(tests-ifunc).
>         * wcsmbs/Makefile (tests-ifunc): Remove variable.
>         (tests): Do not add $(tests-ifunc).
>         * benchtests/bench-string.h (TEST_IFUNC): Remove macro.
>         [TEST_IFUNC]: Remove conditionals.
>         * string/test-string.h (TEST_IFUNC): Remove macro.
>         [TEST_IFUNC]: Remove conditionals.

Looks ok to me.

> diff --git a/Rules b/Rules
> index 4f9cdf3..82d8e97 100644
> --- a/Rules
> +++ b/Rules
> @@ -84,10 +84,6 @@ common-generated += dummy.o dummy.c
>  # This makes all the auxiliary and test programs.
>
>  .PHONY: others tests bench
> -ifeq ($(multi-arch),no)
> -tests := $(filter-out $(tests-ifunc), $(tests))
> -xtests := $(filter-out $(xtests-ifunc), $(xtests))
> -endif
>
>  ifeq ($(build-programs),yes)
>  others: $(addprefix $(objpfx),$(others) $(sysdep-others) $(extra-objs))
> diff --git a/benchtests/bench-string.h b/benchtests/bench-string.h
> index bdb927f..d0a247a 100644
> --- a/benchtests/bench-string.h
> +++ b/benchtests/bench-string.h
> @@ -17,7 +17,6 @@
>     <http://www.gnu.org/licenses/>.  */
>
>  #include <sys/cdefs.h>
> -#define TEST_IFUNC 1
>
>  typedef struct
>  {
> @@ -107,7 +106,7 @@ size_t iterations = 100000;
>  # define CALL(impl, ...)       \
>      (* (proto_t) (impl)->fn) (__VA_ARGS__)
>
> -# if defined TEST_IFUNC && defined TEST_NAME
> +# ifdef TEST_NAME
>  /* Increase size of FUNC_LIST if assert is triggered at run-time.  */
>  static struct libc_ifunc_impl func_list[32];
>  static int func_count;
> @@ -153,11 +152,11 @@ static impl_t *impl_array;
>       impl = impl_array;                                                              \
>       for (count = 0; count < impl_count; ++count, ++impl)                    \
>         if (!notall || impl->test)
> -# else /* ! (defined TEST_IFUNC && defined TEST_NAME) */
> +# else /* !TEST_NAME */
>  #  define FOR_EACH_IMPL(impl, notall) \
>       for (impl_t *impl = __start_impls; impl < __stop_impls; ++impl)         \
>         if (!notall || impl->test)
> -# endif /* ! (defined TEST_IFUNC && defined TEST_NAME) */
> +# endif /* !TEST_NAME */
>
>  # ifndef BUF1PAGES
>  #  define BUF1PAGES 1
> @@ -166,7 +165,7 @@ static impl_t *impl_array;
>  static void
>  test_init (void)
>  {
> -# if defined TEST_IFUNC && defined TEST_NAME
> +# ifdef TEST_NAME
>    func_count = __libc_ifunc_impl_list (TEST_NAME, func_list,
>                                        (sizeof func_list
>                                         / sizeof func_list[0]));
> diff --git a/debug/Makefile b/debug/Makefile
> index c284c51..3ddcd1e 100644
> --- a/debug/Makefile
> +++ b/debug/Makefile
> @@ -135,9 +135,6 @@ tests = backtrace-tst tst-longjmp_chk tst-chk1 tst-chk2 tst-chk3 \
>         tst-longjmp_chk2 tst-backtrace2 tst-backtrace3 tst-backtrace4 \
>         tst-backtrace5 tst-backtrace6
>
> -tests-ifunc := $(stpcpy_chk strcpy_chk:%=test-%-ifunc)
> -tests += $(tests-ifunc)
> -
>  extra-libs = libSegFault libpcprofile
>  extra-libs-others = $(extra-libs)
>
> diff --git a/debug/test-stpcpy_chk-ifunc.c b/debug/test-stpcpy_chk-ifunc.c
> deleted file mode 100644
> index 91bd628..0000000
> --- a/debug/test-stpcpy_chk-ifunc.c
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/* Test and measure IFUNC implementations of stpcpy checking function.
> -   Copyright (C) 2012-2014 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#define TEST_IFUNC 1
> -#include "test-stpcpy_chk.c"
> diff --git a/debug/test-strcpy_chk-ifunc.c b/debug/test-strcpy_chk-ifunc.c
> deleted file mode 100644
> index 8fe9fad..0000000
> --- a/debug/test-strcpy_chk-ifunc.c
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/* Test and measure IFUNC implementations of strcpy checking function.
> -   Copyright (C) 2012-2014 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#define TEST_IFUNC 1
> -#include "test-strcpy_chk.c"
> diff --git a/string/test-string.h b/string/test-string.h
> index 4d9a39d..0051132 100644
> --- a/string/test-string.h
> +++ b/string/test-string.h
> @@ -18,7 +18,6 @@
>     <http://www.gnu.org/licenses/>.  */
>
>  #include <sys/cdefs.h>
> -#define TEST_IFUNC
>
>  typedef struct
>  {
> @@ -105,7 +104,7 @@ size_t iterations = 100000;
>  #define CALL(impl, ...)        \
>    (* (proto_t) (impl)->fn) (__VA_ARGS__)
>
> -#if defined TEST_IFUNC && defined TEST_NAME
> +#ifdef TEST_NAME
>  /* Increase size of FUNC_LIST if assert is triggered at run-time.  */
>  static struct libc_ifunc_impl func_list[32];
>  static int func_count;
> @@ -164,7 +163,7 @@ static impl_t *impl_array;
>  static void
>  test_init (void)
>  {
> -#if defined TEST_IFUNC && defined TEST_NAME
> +#ifdef TEST_NAME
>    func_count = __libc_ifunc_impl_list (TEST_NAME, func_list,
>                                        (sizeof func_list
>                                         / sizeof func_list[0]));
> diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
> index 42843a6..f964d9f 100644
> --- a/wcsmbs/Makefile
> +++ b/wcsmbs/Makefile
> @@ -46,8 +46,6 @@ strop-tests :=  wcscmp wmemcmp wcslen wcschr wcsrchr wcscpy
>  tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
>          tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
>          tst-c16c32-1 wcsatcliff $(addprefix test-,$(strop-tests))
> -tests-ifunc := $(strop-tests:%=test-%-ifunc)
> -tests += $(tests-ifunc)
>
>  include ../Rules
>
> diff --git a/wcsmbs/test-wcschr-ifunc.c b/wcsmbs/test-wcschr-ifunc.c
> deleted file mode 100644
> index cf10c95..0000000
> --- a/wcsmbs/test-wcschr-ifunc.c
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/* Test and measure IFUNC implementations of wcschr function.
> -   Copyright (C) 2012-2014 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#define TEST_IFUNC 1
> -#include "test-wcschr.c"
> diff --git a/wcsmbs/test-wcscmp-ifunc.c b/wcsmbs/test-wcscmp-ifunc.c
> deleted file mode 100644
> index 94bfead..0000000
> --- a/wcsmbs/test-wcscmp-ifunc.c
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/* Test and measure IFUNC implementations of wcscmp function.
> -   Copyright (C) 2012-2014 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#define TEST_IFUNC 1
> -#include "test-wcscmp.c"
> diff --git a/wcsmbs/test-wcscpy-ifunc.c b/wcsmbs/test-wcscpy-ifunc.c
> deleted file mode 100644
> index 7478908..0000000
> --- a/wcsmbs/test-wcscpy-ifunc.c
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/* Test and measure IFUNC implementations of wcscpy function.
> -   Copyright (C) 2012-2014 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#define TEST_IFUNC 1
> -#include "test-wcscpy.c"
> diff --git a/wcsmbs/test-wcslen-ifunc.c b/wcsmbs/test-wcslen-ifunc.c
> deleted file mode 100644
> index 974ea18..0000000
> --- a/wcsmbs/test-wcslen-ifunc.c
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/* Test and measure IFUNC implementations of wcslen function.
> -   Copyright (C) 2012-2014 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#define TEST_IFUNC 1
> -#include "test-wcslen.c"
> diff --git a/wcsmbs/test-wcsrchr-ifunc.c b/wcsmbs/test-wcsrchr-ifunc.c
> deleted file mode 100644
> index 16e3eb5..0000000
> --- a/wcsmbs/test-wcsrchr-ifunc.c
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/* Test and measure IFUNC implementations of wcsrchr function.
> -   Copyright (C) 2012-2014 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#define TEST_IFUNC 1
> -#include "test-wcsrchr.c"
> diff --git a/wcsmbs/test-wmemcmp-ifunc.c b/wcsmbs/test-wmemcmp-ifunc.c
> deleted file mode 100644
> index da1a71d..0000000
> --- a/wcsmbs/test-wmemcmp-ifunc.c
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -/* Test and measure IFUNC implementations of wmemcmp function.
> -   Copyright (C) 2012-2014 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#define TEST_IFUNC 1
> -#include "test-wmemcmp.c"
>
> --
> Joseph S. Myers
> joseph@codesourcery.com



-- 
Will Newton
Toolchain Working Group, Linaro


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]