From 40b7fbf27310d4f4a899aa2c54740dce5369ec70 Mon Sep 17 00:00:00 2001 From: Wilco Dijkstra Date: Fri, 10 Feb 2017 17:26:16 +0000 Subject: GLIBC uses strchr (s, '\0') as an idiom to find the end of a string. This is transformed into rawmemchr by the bits/string2.h header. However this is generally slower than strlen on most targets, even when an optimized rawmemchr implementation exists. Since GCC7 optimizes strchr (s, '\0') to strlen (s) + s, the GLIBC headers should not transform this to rawmemchr. As GCC recognizes strchr as a builtin, defining strchr as the builtin is not useful. * string/bits/string2.h (strchr): Remove define. --- string/bits/string2.h | 10 ---------- 1 file changed, 10 deletions(-) (limited to 'string') diff --git a/string/bits/string2.h b/string/bits/string2.h index e5337becf6..8b138a2a3c 100644 --- a/string/bits/string2.h +++ b/string/bits/string2.h @@ -58,16 +58,6 @@ #endif -#ifndef _HAVE_STRING_ARCH_strchr -extern void *__rawmemchr (const void *__s, int __c); -# define strchr(s, c) \ - (__extension__ (__builtin_constant_p (c) && !__builtin_constant_p (s) \ - && (c) == '\0' \ - ? (char *) __rawmemchr (s, c) \ - : __builtin_strchr (s, c))) -#endif - - /* Copy SRC to DEST, returning pointer to final NUL byte. */ #ifdef __USE_GNU # ifndef _HAVE_STRING_ARCH_stpcpy -- cgit 1.4.1