Message ID | 20230202181149.2181553-11-adhemerval.zanella@linaro.org |
---|---|
State | New |
Headers | show |
Series | Improve generic string routines | expand |
On Thu, Feb 2, 2023 at 12:12 PM Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote: > > Now that stpcpy is vectorized based on op_t, it should be better to > call it instead of strlen plus memcpy. > > Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64-linux-gnu, > and powerpc-linux-gnu by removing the arch-specific assembly > implementation and disabling multi-arch (it covers both LE and BE > for 64 and 32 bits). > > Reviewed-by: Richard Henderson <richard.henderson@linaro.org> > --- > string/strcpy.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/string/strcpy.c b/string/strcpy.c > index 0345c71d15..d945d8fdf0 100644 > --- a/string/strcpy.c > +++ b/string/strcpy.c > @@ -19,6 +19,9 @@ > #include <string.h> > > #undef strcpy > +/* Disable internal stpcpy optimization, otherwise the __stpcpy might it > + generate a strcpy call. */ > +#undef __stpcpy > > #ifndef STRCPY > # define STRCPY strcpy > @@ -28,6 +31,7 @@ > char * > STRCPY (char *dest, const char *src) > { > - return memcpy (dest, src, strlen (src) + 1); > + __stpcpy (dest, src); > + return dest; > } > libc_hidden_builtin_def (strcpy) > -- > 2.34.1 > LGTM. Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
diff --git a/string/strcpy.c b/string/strcpy.c index 0345c71d15..d945d8fdf0 100644 --- a/string/strcpy.c +++ b/string/strcpy.c @@ -19,6 +19,9 @@ #include <string.h> #undef strcpy +/* Disable internal stpcpy optimization, otherwise the __stpcpy might it + generate a strcpy call. */ +#undef __stpcpy #ifndef STRCPY # define STRCPY strcpy @@ -28,6 +31,7 @@ char * STRCPY (char *dest, const char *src) { - return memcpy (dest, src, strlen (src) + 1); + __stpcpy (dest, src); + return dest; } libc_hidden_builtin_def (strcpy)
Now that stpcpy is vectorized based on op_t, it should be better to call it instead of strlen plus memcpy. Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64-linux-gnu, and powerpc-linux-gnu by removing the arch-specific assembly implementation and disabling multi-arch (it covers both LE and BE for 64 and 32 bits). Reviewed-by: Richard Henderson <richard.henderson@linaro.org> --- string/strcpy.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)