public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Noah Goldstein <goldstein.w.n@gmail.com>
To: Siddhesh Poyarekar <siddhesh@sourceware.org>
Cc: GNU C Library <libc-alpha@sourceware.org>,
	"Carlos O'Donell" <carlos@redhat.com>
Subject: Re: [PATCH v2] tests/string: Drop simple/stupid/builtin tests
Date: Wed, 6 Apr 2022 09:20:00 -0500	[thread overview]
Message-ID: <CAFUsyfLi4pVfnTUbMbM0nu-3Po76yXbJrJtRbxZNk6Smthni6g@mail.gmail.com> (raw)
In-Reply-To: <20220406065243.122946-1-siddhesh@sourceware.org>

On Wed, Apr 6, 2022 at 1:52 AM Siddhesh Poyarekar
<siddhesh@sourceware.org> wrote:
>
> In most cases the simple/stupid/builtin functions were in there to
> benchmark optimized implementations against.  Only in some cases the
> functions are used to check expected results.
>
> Remove these tests from IMPL() and only keep one simple implementation to
> generate expected results if needed.
>
> This improves timing of `make subdirs=string` by over a minute and a
> half (over 15%) on a Whiskey Lake laptop.
>
> Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>

LGTM.
> ---
> Changes from v1:
> - Retain a simple_* implementation for future need.
>
>  string/test-memccpy.c        | 18 +---------------
>  string/test-memchr.c         |  3 +--
>  string/test-memcmp.c         |  1 -
>  string/test-memcpy-support.h | 12 ++---------
>  string/test-memmem.c         |  3 +--
>  string/test-memmove.c        |  6 +++---
>  string/test-mempcpy.c        |  4 +---
>  string/test-memrchr.c        |  3 +--
>  string/test-memset.c         | 42 +++++-------------------------------
>  string/test-strcasecmp.c     | 25 ++-------------------
>  string/test-strcasestr.c     | 11 +++++-----
>  string/test-strcat.c         |  3 +--
>  string/test-strchr.c         | 16 ++------------
>  string/test-strcmp.c         |  1 -
>  string/test-strcpy.c         |  4 +---
>  string/test-strlen.c         |  2 +-
>  string/test-strncasecmp.c    | 25 +--------------------
>  string/test-strncat.c        |  8 ++-----
>  string/test-strncmp.c        |  1 -
>  string/test-strncpy.c        | 19 +---------------
>  string/test-strnlen.c        |  3 +--
>  string/test-strpbrk.c        | 21 ++----------------
>  string/test-strrchr.c        |  3 +--
>  string/test-strspn.c         | 24 +--------------------
>  string/test-strstr.c         | 15 ++++++-------
>  25 files changed, 43 insertions(+), 230 deletions(-)
>
> diff --git a/string/test-memccpy.c b/string/test-memccpy.c
> index ee2cf8b8af..c7cc866fa2 100644
> --- a/string/test-memccpy.c
> +++ b/string/test-memccpy.c
> @@ -20,13 +20,9 @@
>  #define TEST_NAME "memccpy"
>  #include "test-string.h"
>
> -void *simple_memccpy (void *, const void *, int, size_t);
> -void *stupid_memccpy (void *, const void *, int, size_t);
> -
> -IMPL (stupid_memccpy, 0)
> -IMPL (simple_memccpy, 0)
>  IMPL (memccpy, 1)
>
> +/* Naive implementation to verify results.  */
>  void *
>  simple_memccpy (void *dst, const void *src, int c, size_t n)
>  {
> @@ -40,18 +36,6 @@ simple_memccpy (void *dst, const void *src, int c, size_t n)
>    return NULL;
>  }
>
> -void *
> -stupid_memccpy (void *dst, const void *src, int c, size_t n)
> -{
> -  void *p = memchr (src, c, n);
> -
> -  if (p != NULL)
> -    return mempcpy (dst, src, p - src + 1);
> -
> -  memcpy (dst, src, n);
> -  return NULL;
> -}
> -
>  typedef void *(*proto_t) (void *, const void *, int c, size_t);
>
>  static void
> diff --git a/string/test-memchr.c b/string/test-memchr.c
> index a4617086b3..279a67ebe6 100644
> --- a/string/test-memchr.c
> +++ b/string/test-memchr.c
> @@ -44,11 +44,10 @@
>  #endif /* WIDE */
>
>  typedef CHAR *(*proto_t) (const CHAR *, int, size_t);
> -CHAR *SIMPLE_MEMCHR (const CHAR *, int, size_t);
>
> -IMPL (SIMPLE_MEMCHR, 0)
>  IMPL (MEMCHR, 1)
>
> +/* Naive implementation to verify results.  */
>  CHAR *
>  SIMPLE_MEMCHR (const CHAR *s, int c, size_t n)
>  {
> diff --git a/string/test-memcmp.c b/string/test-memcmp.c
> index 89ef3419a0..181b689f68 100644
> --- a/string/test-memcmp.c
> +++ b/string/test-memcmp.c
> @@ -85,7 +85,6 @@ SIMPLE_MEMCMP (const char *s1, const char *s2, size_t n)
>
>  typedef int (*proto_t) (const CHAR *, const CHAR *, size_t);
>
> -IMPL (SIMPLE_MEMCMP, 0)
>  IMPL (MEMCMP, 1)
>
>  static int
> diff --git a/string/test-memcpy-support.h b/string/test-memcpy-support.h
> index f1763da895..7759fd22f4 100644
> --- a/string/test-memcpy-support.h
> +++ b/string/test-memcpy-support.h
> @@ -29,12 +29,9 @@
>  #define TIMEOUT (8 * 60)
>  #include "test-string.h"
>
> -char *simple_memcpy (char *, const char *, size_t);
> -char *builtin_memcpy (char *, const char *, size_t);
> -
> -IMPL (simple_memcpy, 0)
> -IMPL (builtin_memcpy, 0)
>  IMPL (memcpy, 1)
> +
> +/* Naive implementation to verify results.  */
>  char *
>  simple_memcpy (char *dst, const char *src, size_t n)
>  {
> @@ -44,11 +41,6 @@ simple_memcpy (char *dst, const char *src, size_t n)
>    return ret;
>  }
>
> -char *
> -builtin_memcpy (char *dst, const char *src, size_t n)
> -{
> -  return __builtin_memcpy (dst, src, n);
> -}
>  #endif
>  typedef char *(*proto_t) (char *, const char *, size_t);
>  typedef uint32_t __attribute__ ((may_alias, aligned (1))) unaligned_uint32_t;
> diff --git a/string/test-memmem.c b/string/test-memmem.c
> index 37d3ea4fca..69803be0ca 100644
> --- a/string/test-memmem.c
> +++ b/string/test-memmem.c
> @@ -23,11 +23,10 @@
>  #include "test-string.h"
>
>  typedef char *(*proto_t) (const void *, size_t, const void *, size_t);
> -void *simple_memmem (const void *, size_t, const void *, size_t);
>
> -IMPL (simple_memmem, 0)
>  IMPL (memmem, 1)
>
> +/* Naive implementation to verify results.  */
>  void *
>  simple_memmem (const void *haystack, size_t haystack_len, const void *needle,
>                size_t needle_len)
> diff --git a/string/test-memmove.c b/string/test-memmove.c
> index 8d9ac86b4f..be8752e833 100644
> --- a/string/test-memmove.c
> +++ b/string/test-memmove.c
> @@ -29,23 +29,23 @@ char *simple_memmove (char *, const char *, size_t);
>
>  #ifdef TEST_BCOPY
>  typedef void (*proto_t) (const char *, char *, size_t);
> -void simple_bcopy (const char *, char *, size_t);
>
> -IMPL (simple_bcopy, 0)
>  IMPL (bcopy, 1)
>
> +/* Naive implementation to verify results.  */
>  void
>  simple_bcopy (const char *src, char *dst, size_t n)
>  {
>    simple_memmove (dst, src, n);
>  }
> +
>  #else
>  typedef char *(*proto_t) (char *, const char *, size_t);
>
> -IMPL (simple_memmove, 0)
>  IMPL (memmove, 1)
>  #endif
>
> +/* Naive implementation to verify results.  */
>  char *
>  inhibit_loop_to_libcall
>  simple_memmove (char *dst, const char *src, size_t n)
> diff --git a/string/test-mempcpy.c b/string/test-mempcpy.c
> index 9637d02787..75808b2831 100644
> --- a/string/test-mempcpy.c
> +++ b/string/test-mempcpy.c
> @@ -22,11 +22,9 @@
>  #define TEST_NAME "mempcpy"
>  #include "test-string.h"
>
> -char *simple_mempcpy (char *, const char *, size_t);
> -
> -IMPL (simple_mempcpy, 0)
>  IMPL (mempcpy, 1)
>
> +/* Naive implementation to verify results.  */
>  char *
>  simple_mempcpy (char *dst, const char *src, size_t n)
>  {
> diff --git a/string/test-memrchr.c b/string/test-memrchr.c
> index 8d60d178a0..80419a6561 100644
> --- a/string/test-memrchr.c
> +++ b/string/test-memrchr.c
> @@ -21,11 +21,10 @@
>  #include "test-string.h"
>
>  typedef char *(*proto_t) (const char *, int, size_t);
> -char *simple_memrchr (const char *, int, size_t);
>
> -IMPL (simple_memrchr, 0)
>  IMPL (memrchr, 1)
>
> +/* Naive implementation to verify results.  */
>  char *
>  simple_memrchr (const char *s, int c, size_t n)
>  {
> diff --git a/string/test-memset.c b/string/test-memset.c
> index ee548f6924..00582c881c 100644
> --- a/string/test-memset.c
> +++ b/string/test-memset.c
> @@ -50,51 +50,19 @@
>  # define BIG_CHAR WCHAR_MAX
>  #endif /* WIDE */
>
> -CHAR *SIMPLE_MEMSET (CHAR *, int, size_t);
> -
>  #ifdef TEST_BZERO
>  typedef void (*proto_t) (char *, size_t);
> -void simple_bzero (char *, size_t);
> -void builtin_bzero (char *, size_t);
> -
> -IMPL (simple_bzero, 0)
> -IMPL (builtin_bzero, 0)
> -#ifdef TEST_EXPLICIT_BZERO
> +# ifdef TEST_EXPLICIT_BZERO
>  IMPL (explicit_bzero, 1)
> -#else
> +# else
>  IMPL (bzero, 1)
> -#endif
> -
> -void
> -simple_bzero (char *s, size_t n)
> -{
> -  SIMPLE_MEMSET (s, 0, n);
> -}
> -
> -void
> -builtin_bzero (char *s, size_t n)
> -{
> -  __builtin_bzero (s, n);
> -}
> +# endif
>  #else
>  typedef CHAR *(*proto_t) (CHAR *, int, size_t);
> -
> -IMPL (SIMPLE_MEMSET, 0)
> -# ifndef WIDE
> -char *builtin_memset (char *, int, size_t);
> -IMPL (builtin_memset, 0)
> -# endif /* !WIDE */
>  IMPL (MEMSET, 1)
> -
> -# ifndef WIDE
> -char *
> -builtin_memset (char *s, int c, size_t n)
> -{
> -  return __builtin_memset (s, c, n);
> -}
> -# endif /* !WIDE */
>  #endif /* !TEST_BZERO */
>
> +/* Naive implementation to verify results.  */
>  CHAR *
>  inhibit_loop_to_libcall
>  SIMPLE_MEMSET (CHAR *s, int c, size_t n)
> @@ -116,7 +84,7 @@ do_one_test (impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n, int
>        s[n] = sentinel;
>    SIMPLE_MEMSET(s, ~c, n);
>  #ifdef TEST_BZERO
> -  simple_bzero (buf, n);
> +  SIMPLE_MEMSET (buf, 0, n);
>    CALL (impl, s, n);
>    if (memcmp (s, buf, n) != 0
>        || (space_below && s[-1] != sentinel)
> diff --git a/string/test-strcasecmp.c b/string/test-strcasecmp.c
> index 438a9713ac..fe48d1197f 100644
> --- a/string/test-strcasecmp.c
> +++ b/string/test-strcasecmp.c
> @@ -27,14 +27,11 @@
>  #include "test-string.h"
>
>  typedef int (*proto_t) (const char *, const char *);
> -static int simple_strcasecmp (const char *, const char *);
> -static int stupid_strcasecmp (const char *, const char *);
>
> -IMPL (stupid_strcasecmp, 0)
> -IMPL (simple_strcasecmp, 0)
>  IMPL (strcasecmp, 1)
>
> -static int
> +/* Naive implementation to verify results.  */
> +int
>  simple_strcasecmp (const char *s1, const char *s2)
>  {
>    int ret;
> @@ -46,24 +43,6 @@ simple_strcasecmp (const char *s1, const char *s2)
>    return ret;
>  }
>
> -static int
> -stupid_strcasecmp (const char *s1, const char *s2)
> -{
> -  size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1;
> -  size_t n = ns1 < ns2 ? ns1 : ns2;
> -  int ret = 0;
> -
> -  while (n--)
> -    {
> -      if ((ret = ((unsigned char) tolower (*s1)
> -                 - (unsigned char) tolower (*s2))) != 0)
> -       break;
> -      ++s1;
> -      ++s2;
> -    }
> -  return ret;
> -}
> -
>  static void
>  do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result)
>  {
> diff --git a/string/test-strcasestr.c b/string/test-strcasestr.c
> index b73bcfe8b4..0d39c62d09 100644
> --- a/string/test-strcasestr.c
> +++ b/string/test-strcasestr.c
> @@ -21,15 +21,15 @@
>  #include "test-string.h"
>
>
> -#define STRCASESTR simple_strcasestr
> +#define STRCASESTR c_strcasestr
>  #define NO_ALIAS
>  #define __strncasecmp strncasecmp
>  #define __strnlen strnlen
>  #include "strcasestr.c"
>
> -
> +/* Naive implementation to verify results.  */
>  static char *
> -stupid_strcasestr (const char *s1, const char *s2)
> +simple_strcasestr (const char *s1, const char *s2)
>  {
>    ssize_t s1len = strlen (s1);
>    ssize_t s2len = strlen (s2);
> @@ -53,8 +53,7 @@ stupid_strcasestr (const char *s1, const char *s2)
>
>  typedef char *(*proto_t) (const char *, const char *);
>
> -IMPL (stupid_strcasestr, 0)
> -IMPL (simple_strcasestr, 0)
> +IMPL (c_strcasestr, 0)
>  IMPL (strcasestr, 1)
>
>
> @@ -129,7 +128,7 @@ check1 (void)
>    const char s2[] = "OK";
>    char *exp_result;
>
> -  exp_result = stupid_strcasestr (s1, s2);
> +  exp_result = simple_strcasestr (s1, s2);
>    FOR_EACH_IMPL (impl, 0)
>      check_result (impl, s1, s2, exp_result);
>  }
> diff --git a/string/test-strcat.c b/string/test-strcat.c
> index b5aab0f66f..59b953c962 100644
> --- a/string/test-strcat.c
> +++ b/string/test-strcat.c
> @@ -54,11 +54,10 @@
>  #endif /* WIDE */
>
>  typedef CHAR *(*proto_t) (CHAR *, const CHAR *);
> -CHAR *SIMPLE_STRCAT (CHAR *, const CHAR *);
>
> -IMPL (SIMPLE_STRCAT, 0)
>  IMPL (STRCAT, 1)
>
> +/* Naive implementation to verify results.  */
>  CHAR *
>  SIMPLE_STRCAT (CHAR *dst, const CHAR *src)
>  {
> diff --git a/string/test-strchr.c b/string/test-strchr.c
> index 4d2ab5fbeb..631e377991 100644
> --- a/string/test-strchr.c
> +++ b/string/test-strchr.c
> @@ -35,7 +35,6 @@
>  #ifndef WIDE
>  # ifdef USE_FOR_STRCHRNUL
>  #  define STRCHR strchrnul
> -#  define stupid_STRCHR stupid_STRCHRNUL
>  #  define simple_STRCHR simple_STRCHRNUL
>  # else
>  #  define STRCHR strchr
> @@ -51,7 +50,6 @@
>  # include <wchar.h>
>  # ifdef USE_FOR_STRCHRNUL
>  #  define STRCHR wcschrnul
> -#  define stupid_STRCHR stupid_WCSCHRNUL
>  #  define simple_STRCHR simple_WCSCHRNUL
>  # else
>  #  define STRCHR wcschr
> @@ -74,17 +72,9 @@
>
>  typedef CHAR *(*proto_t) (const CHAR *, int);
>
> +/* Naive implementation to verify results.  */
>  CHAR *
>  simple_STRCHR (const CHAR *s, int c)
> -{
> -  for (; *s != (CHAR) c; ++s)
> -    if (*s == '\0')
> -      return NULLRET ((CHAR *) s);
> -  return (CHAR *) s;
> -}
> -
> -CHAR *
> -stupid_STRCHR (const CHAR *s, int c)
>  {
>    size_t n = STRLEN (s) + 1;
>
> @@ -94,8 +84,6 @@ stupid_STRCHR (const CHAR *s, int c)
>    return NULLRET ((CHAR *) s - 1);
>  }
>
> -IMPL (stupid_STRCHR, 0)
> -IMPL (simple_STRCHR, 0)
>  IMPL (STRCHR, 1)
>
>  static int
> @@ -231,7 +219,7 @@ check1 (void)
>  {
>    CHAR s[] __attribute__((aligned(16))) = L ("\xff");
>    CHAR c = L ('\xfe');
> -  CHAR *exp_result = stupid_STRCHR (s, c);
> +  CHAR *exp_result = simple_STRCHR (s, c);
>
>    FOR_EACH_IMPL (impl, 0)
>      check_result (impl, s, c, exp_result);
> diff --git a/string/test-strcmp.c b/string/test-strcmp.c
> index ece03c6d0b..2372e92eaf 100644
> --- a/string/test-strcmp.c
> +++ b/string/test-strcmp.c
> @@ -99,7 +99,6 @@ simple_strcmp (const char *s1, const char *s2)
>
>  typedef int (*proto_t) (const CHAR *, const CHAR *);
>
> -IMPL (SIMPLE_STRCMP, 1)
>  IMPL (STRCMP, 1)
>
>  static int
> diff --git a/string/test-strcpy.c b/string/test-strcpy.c
> index 83b77073bb..7e7d10af63 100644
> --- a/string/test-strcpy.c
> +++ b/string/test-strcpy.c
> @@ -54,11 +54,9 @@
>  #  define STRCPY wcscpy
>  # endif
>
> -CHAR *SIMPLE_STRCPY (CHAR *, const CHAR *);
> -
> -IMPL (SIMPLE_STRCPY, 0)
>  IMPL (STRCPY, 1)
>
> +/* Naive implementation to verify results.  */
>  CHAR *
>  SIMPLE_STRCPY (CHAR *dst, const CHAR *src)
>  {
> diff --git a/string/test-strlen.c b/string/test-strlen.c
> index dd394dadc5..21a9cc10a6 100644
> --- a/string/test-strlen.c
> +++ b/string/test-strlen.c
> @@ -37,6 +37,7 @@
>
>  typedef size_t (*proto_t) (const CHAR *);
>
> +/* Naive implementation to verify results.  */
>  size_t
>  simple_STRLEN (const CHAR *s)
>  {
> @@ -55,7 +56,6 @@ builtin_strlen (const CHAR *p)
>  IMPL (builtin_strlen, 0)
>  #endif
>
> -IMPL (simple_STRLEN, 0)
>  IMPL (STRLEN, 1)
>
>
> diff --git a/string/test-strncasecmp.c b/string/test-strncasecmp.c
> index 1aebc37bb6..126ced9e58 100644
> --- a/string/test-strncasecmp.c
> +++ b/string/test-strncasecmp.c
> @@ -29,12 +29,10 @@
>
>  typedef int (*proto_t) (const char *, const char *, size_t);
>  static int simple_strncasecmp (const char *, const char *, size_t);
> -static int stupid_strncasecmp (const char *, const char *, size_t);
>
> -IMPL (stupid_strncasecmp, 0)
> -IMPL (simple_strncasecmp, 0)
>  IMPL (strncasecmp, 1)
>
> +/* Naive implementation to verify results.  */
>  static int
>  simple_strncasecmp (const char *s1, const char *s2, size_t n)
>  {
> @@ -54,27 +52,6 @@ simple_strncasecmp (const char *s1, const char *s2, size_t n)
>    return ret;
>  }
>
> -static int
> -stupid_strncasecmp (const char *s1, const char *s2, size_t max)
> -{
> -  size_t ns1 = strlen (s1) + 1;
> -  size_t ns2 = strlen (s2) + 1;
> -  size_t n = ns1 < ns2 ? ns1 : ns2;
> -  if (n > max)
> -    n = max;
> -  int ret = 0;
> -
> -  while (n--)
> -    {
> -      if ((ret = ((unsigned char) tolower (*s1)
> -                 - (unsigned char) tolower (*s2))) != 0)
> -       break;
> -      ++s1;
> -      ++s2;
> -    }
> -  return ret;
> -}
> -
>  static int
>  check_result (impl_t *impl, const char *s1, const char *s2, size_t n,
>               int exp_result)
> diff --git a/string/test-strncat.c b/string/test-strncat.c
> index 86ec101258..5fcaa8637c 100644
> --- a/string/test-strncat.c
> +++ b/string/test-strncat.c
> @@ -28,7 +28,6 @@
>  # define CHAR char
>  # define UCHAR unsigned char
>  # define SIMPLE_STRNCAT simple_strncat
> -# define STUPID_STRNCAT stupid_strncat
>  # define STRLEN strlen
>  # define MEMSET memset
>  # define MEMCPY memcpy
> @@ -41,7 +40,6 @@
>  # define CHAR wchar_t
>  # define UCHAR wchar_t
>  # define SIMPLE_STRNCAT simple_wcsncat
> -# define STUPID_STRNCAT stupid_wcsncat
>  # define STRLEN wcslen
>  # define MEMSET wmemset
>  # define MEMCPY wmemcpy
> @@ -51,14 +49,12 @@
>  #endif /* WIDE */
>
>  typedef CHAR *(*proto_t) (CHAR *, const CHAR *, size_t);
> -CHAR *STUPID_STRNCAT (CHAR *, const CHAR *, size_t);
> -CHAR *SIMPLE_STRNCAT (CHAR *, const CHAR *, size_t);
>
> -IMPL (STUPID_STRNCAT, 0)
>  IMPL (STRNCAT, 2)
>
> +/* Naive implementation to verify results.  */
>  CHAR *
> -STUPID_STRNCAT (CHAR *dst, const CHAR *src, size_t n)
> +SIMPLE_STRNCAT (CHAR *dst, const CHAR *src, size_t n)
>  {
>    CHAR *ret = dst;
>    while (*dst++ != '\0');
> diff --git a/string/test-strncmp.c b/string/test-strncmp.c
> index 3e35142548..693ab4d6c9 100644
> --- a/string/test-strncmp.c
> +++ b/string/test-strncmp.c
> @@ -88,7 +88,6 @@ simple_strncmp (const char *s1, const char *s2, size_t n)
>
>  typedef int (*proto_t) (const CHAR *, const CHAR *, size_t);
>
> -IMPL (SIMPLE_STRNCMP, 0)
>  IMPL (STRNCMP, 1)
>
>
> diff --git a/string/test-strncpy.c b/string/test-strncpy.c
> index 4ae08abe44..f1f627a0b5 100644
> --- a/string/test-strncpy.c
> +++ b/string/test-strncpy.c
> @@ -47,21 +47,16 @@
>  # include "test-string.h"
>  # ifndef WIDE
>  #  define SIMPLE_STRNCPY simple_strncpy
> -#  define STUPID_STRNCPY stupid_strncpy
>  #  define STRNCPY strncpy
>  # else
>  #  define SIMPLE_STRNCPY simple_wcsncpy
> -#  define STUPID_STRNCPY stupid_wcsncpy
>  #  define STRNCPY wcsncpy
>  # endif /* WIDE */
>
> -CHAR *SIMPLE_STRNCPY (CHAR *, const CHAR *, size_t);
> -CHAR *STUPID_STRNCPY (CHAR *, const CHAR *, size_t);
>
> -IMPL (STUPID_STRNCPY, 0)
> -IMPL (SIMPLE_STRNCPY, 0)
>  IMPL (STRNCPY, 1)
>
> +/* Naive implementation to verify results.  */
>  CHAR *
>  SIMPLE_STRNCPY (CHAR *dst, const CHAR *src, size_t n)
>  {
> @@ -76,18 +71,6 @@ SIMPLE_STRNCPY (CHAR *dst, const CHAR *src, size_t n)
>    return ret;
>  }
>
> -CHAR *
> -STUPID_STRNCPY (CHAR *dst, const CHAR *src, size_t n)
> -{
> -  size_t nc = STRNLEN (src, n);
> -  size_t i;
> -
> -  for (i = 0; i < nc; ++i)
> -    dst[i] = src[i];
> -  for (; i < n; ++i)
> -    dst[i] = '\0';
> -  return dst;
> -}
>  #endif /* !STRNCPY_RESULT */
>
>  typedef CHAR *(*proto_t) (CHAR *, const CHAR *, size_t);
> diff --git a/string/test-strnlen.c b/string/test-strnlen.c
> index 726c630db2..83c4502b9a 100644
> --- a/string/test-strnlen.c
> +++ b/string/test-strnlen.c
> @@ -42,11 +42,10 @@
>  #endif /* !WIDE */
>
>  typedef size_t (*proto_t) (const CHAR *, size_t);
> -size_t SIMPLE_STRNLEN (const CHAR *, size_t);
>
> -IMPL (SIMPLE_STRNLEN, 0)
>  IMPL (STRNLEN, 1)
>
> +/* Naive implementation to verify results.  */
>  size_t
>  SIMPLE_STRNLEN (const CHAR *s, size_t maxlen)
>  {
> diff --git a/string/test-strpbrk.c b/string/test-strpbrk.c
> index 05fd81e0fc..de8dc0a9c3 100644
> --- a/string/test-strpbrk.c
> +++ b/string/test-strpbrk.c
> @@ -47,22 +47,17 @@
>  # ifndef WIDE
>  #  define STRPBRK strpbrk
>  #  define SIMPLE_STRPBRK simple_strpbrk
> -#  define STUPID_STRPBRK stupid_strpbrk
>  # else
>  #  include <wchar.h>
>  #  define STRPBRK wcspbrk
>  #  define SIMPLE_STRPBRK simple_wcspbrk
> -#  define STUPID_STRPBRK stupid_wcspbrk
>  # endif /* WIDE */
>
>  typedef CHAR *(*proto_t) (const CHAR *, const CHAR *);
> -CHAR *SIMPLE_STRPBRK (const CHAR *, const CHAR *);
> -CHAR *STUPID_STRPBRK (const CHAR *, const CHAR *);
>
> -IMPL (STUPID_STRPBRK, 0)
> -IMPL (SIMPLE_STRPBRK, 0)
>  IMPL (STRPBRK, 1)
>
> +/* Naive implementation to verify results.  */
>  CHAR *
>  SIMPLE_STRPBRK (const CHAR *s, const CHAR *rej)
>  {
> @@ -72,22 +67,10 @@ SIMPLE_STRPBRK (const CHAR *s, const CHAR *rej)
>    while ((c = *s++) != '\0')
>      for (r = rej; *r != '\0'; ++r)
>        if (*r == c)
> -       return (CHAR *) s - 1;
> +       return (CHAR *) s - 1;
>    return NULL;
>  }
>
> -CHAR *
> -STUPID_STRPBRK (const CHAR *s, const CHAR *rej)
> -{
> -  size_t ns = STRLEN (s), nrej = STRLEN (rej);
> -  size_t i, j;
> -
> -  for (i = 0; i < ns; ++i)
> -    for (j = 0; j < nrej; ++j)
> -      if (s[i] == rej[j])
> -       return (CHAR *) s + i;
> -  return NULL;
> -}
>  #endif /* !STRPBRK_RESULT */
>
>  static void
> diff --git a/string/test-strrchr.c b/string/test-strrchr.c
> index a610200c11..bf4decb358 100644
> --- a/string/test-strrchr.c
> +++ b/string/test-strrchr.c
> @@ -42,11 +42,10 @@
>  #endif
>
>  typedef CHAR *(*proto_t) (const CHAR *, int);
> -CHAR *SIMPLE_STRRCHR (const CHAR *, int);
>
> -IMPL (SIMPLE_STRRCHR, 0)
>  IMPL (STRRCHR, 1)
>
> +/* Naive implementation to verify results.  */
>  CHAR *
>  SIMPLE_STRRCHR (const CHAR *s, int c)
>  {
> diff --git a/string/test-strspn.c b/string/test-strspn.c
> index 1680cb7828..a9c42458fe 100644
> --- a/string/test-strspn.c
> +++ b/string/test-strspn.c
> @@ -29,7 +29,6 @@
>  # define CHAR char
>  # define UCHAR unsigned char
>  # define SIMPLE_STRSPN simple_strspn
> -# define STUPID_STRSPN stupid_strspn
>  # define STRLEN strlen
>  # define STRCHR strchr
>  # define BIG_CHAR CHAR_MAX
> @@ -40,7 +39,6 @@
>  # define CHAR wchar_t
>  # define UCHAR wchar_t
>  # define SIMPLE_STRSPN simple_wcsspn
> -# define STUPID_STRSPN stupid_wcsspn
>  # define STRLEN wcslen
>  # define STRCHR wcschr
>  # define BIG_CHAR WCHAR_MAX
> @@ -48,13 +46,10 @@
>  #endif /* WIDE */
>
>  typedef size_t (*proto_t) (const CHAR *, const CHAR *);
> -size_t SIMPLE_STRSPN (const CHAR *, const CHAR *);
> -size_t STUPID_STRSPN (const CHAR *, const CHAR *);
>
> -IMPL (STUPID_STRSPN, 0)
> -IMPL (SIMPLE_STRSPN, 0)
>  IMPL (STRSPN, 1)
>
> +/* Naive implementation to verify results.  */
>  size_t
>  SIMPLE_STRSPN (const CHAR *s, const CHAR *acc)
>  {
> @@ -72,23 +67,6 @@ SIMPLE_STRSPN (const CHAR *s, const CHAR *acc)
>    return s - str - 1;
>  }
>
> -size_t
> -STUPID_STRSPN (const CHAR *s, const CHAR *acc)
> -{
> -  size_t ns = STRLEN (s), nacc = STRLEN (acc);
> -  size_t i, j;
> -
> -  for (i = 0; i < ns; ++i)
> -    {
> -      for (j = 0; j < nacc; ++j)
> -       if (s[i] == acc[j])
> -         break;
> -      if (j == nacc)
> -       return i;
> -    }
> -  return i;
> -}
> -
>  static void
>  do_one_test (impl_t *impl, const CHAR *s, const CHAR *acc, size_t exp_res)
>  {
> diff --git a/string/test-strstr.c b/string/test-strstr.c
> index 7f610f4cac..b1f2134360 100644
> --- a/string/test-strstr.c
> +++ b/string/test-strstr.c
> @@ -21,14 +21,14 @@
>  #include "test-string.h"
>
>
> -#define STRSTR simple_strstr
> +#define STRSTR c_strstr
>  #define libc_hidden_builtin_def(arg) /* nothing */
>  #define __strnlen strnlen
>  #include "strstr.c"
>
> -
> +/* Naive implementation to verify results.  */
>  static char *
> -stupid_strstr (const char *s1, const char *s2)
> +simple_strstr (const char *s1, const char *s2)
>  {
>    ssize_t s1len = strlen (s1);
>    ssize_t s2len = strlen (s2);
> @@ -52,8 +52,7 @@ stupid_strstr (const char *s1, const char *s2)
>
>  typedef char *(*proto_t) (const char *, const char *);
>
> -IMPL (stupid_strstr, 0)
> -IMPL (simple_strstr, 0)
> +IMPL (c_strstr, 0)
>  IMPL (strstr, 1)
>
>
> @@ -130,7 +129,7 @@ check1 (void)
>    const char s2[] = "_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD_EF_BF_BD";
>    char *exp_result;
>
> -  exp_result = stupid_strstr (s1, s2);
> +  exp_result = simple_strstr (s1, s2);
>    FOR_EACH_IMPL (impl, 0)
>      check_result (impl, s1, s2, exp_result);
>  }
> @@ -163,7 +162,7 @@ check2 (void)
>    char *s2_page_cross = (void *) buf2 + page_size_real - 8;
>    strcpy (s2_page_cross, s2_stack);
>
> -  exp_result = stupid_strstr (s1_stack, s2_stack);
> +  exp_result = simple_strstr (s1_stack, s2_stack);
>    FOR_EACH_IMPL (impl, 0)
>      {
>        check_result (impl, s1_stack, s2_stack, exp_result);
> @@ -201,7 +200,7 @@ pr23637 (void)
>    /* Ensure we don't match at the first 'x'.  */
>    h[0] = 'x';
>
> -  char *exp_result = stupid_strstr (h, n);
> +  char *exp_result = simple_strstr (h, n);
>    FOR_EACH_IMPL (impl, 0)
>      check_result (impl, h, n, exp_result);
>  }
> --
> 2.35.1
>

      reply	other threads:[~2022-04-06 14:20 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-05  5:05 [PATCH] " Siddhesh Poyarekar
2022-04-05 20:28 ` Noah Goldstein
2022-04-06  6:08   ` Siddhesh Poyarekar
2022-04-06  6:52 ` [PATCH v2] " Siddhesh Poyarekar
2022-04-06 14:20   ` Noah Goldstein [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAFUsyfLi4pVfnTUbMbM0nu-3Po76yXbJrJtRbxZNk6Smthni6g@mail.gmail.com \
    --to=goldstein.w.n@gmail.com \
    --cc=carlos@redhat.com \
    --cc=libc-alpha@sourceware.org \
    --cc=siddhesh@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).