Add strchrnul performance test
authorUlrich Drepper <drepper@gmail.com>
Sat, 29 Oct 2011 15:54:15 +0000 (11:54 -0400)
committerUlrich Drepper <drepper@gmail.com>
Sat, 29 Oct 2011 15:54:15 +0000 (11:54 -0400)
ChangeLog
string/Makefile
string/test-strchr.c
string/test-strchrnul.c [new file with mode: 0644]

index f673202..98db094 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2011-10-29  Ulrich Drepper  <drepper@gmail.com>
 
+       * string/test-strchr.c: Make usable for strchrnul testing.
+       * string/test-strchrnul.c: New file.
+       * string/Makefile (strop-tests): Add strchrnul.
+
        * po/it.po: Update from translation team.
        * po/es.po: Likewise.
 
index 109f59b..459cf81 100644 (file)
@@ -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      \
index 3bbc2f5..a46ee82 100644 (file)
 #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
 # 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 (file)
index 0000000..9836af6
--- /dev/null
@@ -0,0 +1,2 @@
+#define USE_FOR_STRCHRNUL 1
+#include "test-strchr.c"