aboutsummaryrefslogtreecommitdiff
path: root/string
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-10-29 11:54:15 -0400
committerUlrich Drepper <drepper@gmail.com>2011-10-29 11:54:15 -0400
commit51d91b18954c998ccda310231f4d120f21a5fd79 (patch)
tree49ff5e47db201d35fc2f65cac0ea17d5dcad42dd /string
parentb611fb810f3932d60b2952a3d7d012d875e4284d (diff)
downloadglibc-51d91b18954c998ccda310231f4d120f21a5fd79.zip
glibc-51d91b18954c998ccda310231f4d120f21a5fd79.tar.gz
glibc-51d91b18954c998ccda310231f4d120f21a5fd79.tar.bz2
Add strchrnul performance test
Diffstat (limited to 'string')
-rw-r--r--string/Makefile2
-rw-r--r--string/test-strchr.c27
-rw-r--r--string/test-strchrnul.c2
3 files changed, 23 insertions, 8 deletions
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"