[v11,11/29] string: Improve generic strcpy

Message ID 20230201170406.303978-12-adhemerval.zanella@linaro.org (mailing list archive)
State Superseded
Headers
Series Improve generic string routines |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Adhemerval Zanella Feb. 1, 2023, 5:03 p.m. UTC
  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).
---
 string/strcpy.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
  

Comments

Richard Henderson Feb. 1, 2023, 5:38 p.m. UTC | #1
On 2/1/23 07:03, Adhemerval Zanella 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).
> ---
>   string/strcpy.c | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~
  

Patch

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)