fix spuriously slow check in twoway strstr/memmem cores
[musl] / src / string / strlen.c
index 929ddcb..309990f 100644 (file)
 size_t strlen(const char *s)
 {
        const char *a = s;
-       const size_t *w;
+#ifdef __GNUC__
+       typedef size_t __attribute__((__may_alias__)) word;
+       const word *w;
        for (; (uintptr_t)s % ALIGN; s++) if (!*s) return s-a;
        for (w = (const void *)s; !HASZERO(*w); w++);
-       for (s = (const void *)w; *s; s++);
+       s = (const void *)w;
+#endif
+       for (; *s; s++);
        return s-a;
 }