From 51d91b18954c998ccda310231f4d120f21a5fd79 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 29 Oct 2011 11:54:15 -0400 Subject: Add strchrnul performance test --- string/Makefile | 2 +- string/test-strchr.c | 27 ++++++++++++++++++++------- string/test-strchrnul.c | 2 ++ 3 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 string/test-strchrnul.c (limited to 'string') diff --git a/string/Makefile b/string/Makefile index 109f59b..459cf81 100644 --- a/string/Makefile +++ b/string/Makefile @@ -50,7 +50,7 @@ strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \ stpcpy stpncpy strcat strchr strcmp strcpy strcspn \ strlen strncmp strncpy strpbrk strrchr strspn memmem \ strstr strcasestr strnlen strcasecmp strncasecmp \ - strncat rawmemchr + strncat rawmemchr strchrnul tests := tester inl-tester noinl-tester testcopy test-ffs \ tst-strlen stratcliff tst-svc tst-inlcall \ bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap \ diff --git a/string/test-strchr.c b/string/test-strchr.c index 3bbc2f5..a46ee82 100644 --- a/string/test-strchr.c +++ b/string/test-strchr.c @@ -23,7 +23,13 @@ #include "test-string.h" #ifndef WIDE -# define STRCHR strchr +# ifdef USE_FOR_STRCHRNUL +# define STRCHR strchrnul +# define stupid_STRCHR stupid_STRCHRNUL +# define simple_STRCHR simple_STRCHRNUL +# else +# define STRCHR strchr +# endif # define STRLEN strlen # define CHAR char # define BIG_CHAR CHAR_MAX @@ -41,6 +47,13 @@ # define UCHAR wchar_t #endif +#ifdef USE_FOR_STRCHRNUL +# define NULLRET(endptr) endptr +#else +# define NULLRET(endptr) NULL +#endif + + typedef CHAR *(*proto_t) (const CHAR *, int); CHAR * @@ -48,7 +61,7 @@ simple_STRCHR (const CHAR *s, int c) { for (; *s != (CHAR) c; ++s) if (*s == '\0') - return NULL; + return NULLRET ((CHAR *) s); return (CHAR *) s; } @@ -60,7 +73,7 @@ stupid_STRCHR (const CHAR *s, int c) while (n--) if (*s++ == (CHAR) c) return (CHAR *) s - 1; - return NULL; + return NULLRET ((CHAR *) s - 1); } IMPL (stupid_STRCHR, 0) @@ -73,8 +86,8 @@ do_one_test (impl_t *impl, const CHAR *s, int c, const CHAR *exp_res) CHAR *res = CALL (impl, s, c); if (res != exp_res) { - error (0, 0, "Wrong result in function %s %p %p", impl->name, - res, exp_res); + error (0, 0, "Wrong result in function %s %#x %p %p", impl->name, + c, res, exp_res); ret = 1; return; } @@ -129,7 +142,7 @@ do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char) else if (seek_char == 0) result = buf + align + len; else - result = NULL; + result = NULLRET (buf + align + len); if (HP_TIMING_AVAIL) printf ("Length %4zd, alignment in bytes %2zd:", @@ -198,7 +211,7 @@ do_random_tests (void) else if (seek_char == 0) result = (CHAR *) (p + len + align); else - result = NULL; + result = NULLRET ((CHAR *) (p + len + align)); FOR_EACH_IMPL (impl, 1) if (CALL (impl, (CHAR *) (p + align), seek_char) != result) diff --git a/string/test-strchrnul.c b/string/test-strchrnul.c new file mode 100644 index 0000000..9836af6 --- /dev/null +++ b/string/test-strchrnul.c @@ -0,0 +1,2 @@ +#define USE_FOR_STRCHRNUL 1 +#include "test-strchr.c" -- cgit v1.1