diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-10-29 11:54:15 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-10-29 11:54:15 -0400 |
commit | 51d91b18954c998ccda310231f4d120f21a5fd79 (patch) | |
tree | 49ff5e47db201d35fc2f65cac0ea17d5dcad42dd /string/test-strchr.c | |
parent | b611fb810f3932d60b2952a3d7d012d875e4284d (diff) | |
download | glibc-51d91b18954c998ccda310231f4d120f21a5fd79.tar glibc-51d91b18954c998ccda310231f4d120f21a5fd79.tar.gz glibc-51d91b18954c998ccda310231f4d120f21a5fd79.tar.bz2 glibc-51d91b18954c998ccda310231f4d120f21a5fd79.zip |
Add strchrnul performance test
Diffstat (limited to 'string/test-strchr.c')
-rw-r--r-- | string/test-strchr.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/string/test-strchr.c b/string/test-strchr.c index 3bbc2f5700..a46ee82c1d 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) |