diff options
author | Wilco Dijkstra <wdijkstr@arm.com> | 2017-02-10 17:26:16 +0000 |
---|---|---|
committer | Wilco Dijkstra <wdijkstr@arm.com> | 2017-02-10 17:28:11 +0000 |
commit | 40b7fbf27310d4f4a899aa2c54740dce5369ec70 (patch) | |
tree | df78f63943d48a7e7af1718d1db7b8229044a2f1 | |
parent | 3403a17fea8ccef7dc5f99553a13231acf838744 (diff) | |
download | glibc-40b7fbf27310d4f4a899aa2c54740dce5369ec70.zip glibc-40b7fbf27310d4f4a899aa2c54740dce5369ec70.tar.gz glibc-40b7fbf27310d4f4a899aa2c54740dce5369ec70.tar.bz2 |
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.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | string/bits/string2.h | 10 |
2 files changed, 4 insertions, 10 deletions
@@ -1,3 +1,7 @@ +2017-02-10 Wilco Dijkstra <wdijkstr@arm.com> + + * string/bits/string2.h (strchr): Remove define. + 2017-02-09 H.J. Lu <hongjiu.lu@intel.com> * sysdeps/x86_64/Makefile (tests): Add tst-sse, tst-avx and diff --git a/string/bits/string2.h b/string/bits/string2.h index e5337be..8b138a2 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 |