mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
wcsmbs: optimize wcscat
This patch rewrites wcscat using wcslen and wcscpy. This is similar to
the optimization done on strcat by 6e46de42fe
.
The strcpy changes are mainly to add the internal alias to avoid PLT
calls.
Checked on x86_64-linux-gnu and a build against the affected
architectures.
* include/wchar.h (__wcscpy): New prototype.
* sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c
(__wcscpy): Route internal symbol to generic implementation.
* sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c (wcscpy):
Add internal __wcscpy alias.
* sysdeps/powerpc/powerpc64/multiarch/wcscpy.c (wcscpy): Likewise.
* sysdeps/s390/wcscpy.c (wcscpy): Likewise.
* sysdeps/x86_64/multiarch/wcscpy.c (wcscpy): Likewise.
* wcsmbs/wcscpy.c (wcscpy): Add
* sysdeps/x86_64/multiarch/wcscpy-c.c (WCSCPY): Adjust macro to
use generic implementation.
* wcsmbs/wcscat.c (wcscat): Rewrite using wcslen and wcscpy.
This commit is contained in:
@ -30,9 +30,11 @@ extern __typeof (wcscpy) WCSCPY_C attribute_hidden;
|
||||
extern __typeof (wcscpy) WCSCPY_Z13 attribute_hidden;
|
||||
# endif
|
||||
|
||||
s390_libc_ifunc_expr (wcscpy, wcscpy,
|
||||
s390_libc_ifunc_expr (wcscpy, __wcscpy,
|
||||
(HAVE_WCSCPY_Z13 && (hwcap & HWCAP_S390_VX))
|
||||
? WCSCPY_Z13
|
||||
: WCSCPY_DEFAULT
|
||||
)
|
||||
weak_alias (__wcscpy, wcscpy)
|
||||
libc_hidden_def (__wcscpy)
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user