- const size_t *w;
- for (; ((uintptr_t)s & ALIGN) && *s; s++);
- if (*s) {
- for (w = (const void *)s; !HASZERO(*w); w++);
- for (s = (const void *)w; *s; s++);
- }
+#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++);
+ s = (const void *)w;
+#endif
+ for (; *s; s++);