Gcc builtin review: strchr, strrchr, strchrnul
Ondřej Bílka
neleai@seznam.cz
Mon May 25 19:15:00 GMT 2015
On Mon, May 25, 2015 at 02:16:34PM +0200, OndÅej BÃlka wrote:
> Then we have strchr, strrchr, strchrnul.
>
> Aside from suggestion of replacing every strchr with strchrnul there are
> missed optimizations of strchr(x,0) and strchrnul(x,0).
>
> A strrchr(x,0) expands just to strchr(x,0) which is not enough as it
> should do full expansion to x+strlen(x).
>
> Then you miss case when x is constant as in wordexp.
Second problem is that you want builtin to evaluate constant strings
arguments. So why gcc could optimize away
int foo(){
return strchr("foo", 'y');
}
but not when strchr is replaced by rawmemchr and strchrnul?
Also as for effectivity a correct primitive is strchrnul and strchr
should be expanded into it this is problem.
More information about the Libc-alpha
mailing list