+2010-07-11 Pádraig Brady <P@draigBrady.com>
+ Bruno Haible <bruno@clisp.org>
+
+ unistr/u8-strchr: Optimize ASCII argument case.
+ * lib/unistr/u8-strchr.c (u8_strchr): For ASCII arguments, use strchr.
+
2010-07-08 Paul Eggert <eggert@cs.ucla.edu>
(x)memcoll: minor tweaks
/* Specification. */
#include "unistr.h"
+#include <string.h>
+
uint8_t *
u8_strchr (const uint8_t *s, ucs4_t uc)
{
{
uint8_t c0 = uc;
- for (;; s++)
+ if (false)
+ {
+ /* Unoptimized code. */
+ for (;; s++)
+ {
+ if (*s == c0)
+ break;
+ if (*s == 0)
+ goto notfound;
+ }
+ return (uint8_t *) s;
+ }
+ else
{
- if (*s == c0)
- break;
- if (*s == 0)
- goto notfound;
+ /* Optimized code.
+ strchr() is often so well optimized, that it's worth the
+ added function call. */
+ return (uint8_t *) strchr ((const char *) s, c0);
}
- return (uint8_t *) s;
}
else
switch (u8_uctomb_aux (c, uc, 6))
{
+ /* Loops equivalent to strstr, optimized for a specific length (2, 3, 4)
+ of the needle. */
case 2:
if (*s == 0)
goto notfound;