Repost PATCH: Improve wcschr, wcsrchr, wcscpy for x86_64 and x86_32.

Andreas Jaeger aj@suse.com
Mon May 21 20:28:00 GMT 2012


On 05/17/2012 09:37 PM, Andreas Jaeger wrote:
> On 12/12/2011 08:03 PM, Dmitrieva Liubov wrote:
>> This is repost of old patches with optimized wcschr (with SSE2),
>> wcsrchr (with SSE2), wcscpy (with SSSE3) and its tests.
>> Please, can you review it.
>
> compiling on Linux/i686 I saw the following warning:
>
> gcc -m32 ../sysdeps/i386/i686/multiarch/wcsrchr-c.c -c -std=gnu99 -fgnu89-inline  -O2 -Wall -Wi
> nline -Wwrite-strings -fmerge-all-constants -frounding-math -g -Wstrict-prototypes   -Wa,-mtune
> =i686       -I../include -I/home/aj/build/glibc/x86/wcsmbs -I/home/aj/build/glibc/x86 -I../nptl
> /sysdeps/unix/sysv/linux/i386/i686 -I../sysdeps/unix/sysv/linux/i386/i686 -I../nptl/sysdeps/uni
> x/sysv/linux/i386 -I../sysdeps/unix/sysv/linux/i386/nptl -I../sysdeps/unix/sysv/linux/i386 -I..
> /nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread -I../sysdeps/pthread -I../sysdeps/unix/
> sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/inet -I../nptl/sysdeps/unix/sysv -I../sysdeps/uni
> x/sysv -I../sysdeps/unix/i386 -I../nptl/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix -I../
> sysdeps/i386/i686/fpu/multiarch -I../sysdeps/i386/i686/fpu -I../sysdeps/i386/i686/multiarch -I.
> ./nptl/sysdeps/i386/i686 -I../sysdeps/i386/i686 -I../sysdeps/i386/i486 -I../nptl/sysdeps/i386/i
> 486 -I../sysdeps/i386/fpu -I../nptl/sysdeps/i386 -I../sysdeps/i386 -I../sysdeps/wordsize-32 -I.
> ./sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/
> ieee754 -I../sysdeps/generic -I../nptl  -I.. -I../libio -I.  -D_LIBC_REENTRANT -include ../incl
> ude/libc-symbols.h       -D_IO_MTSAFE_IO -o /home/aj/build/glibc/x86/wcsmbs/wcsrchr-c.o -MD -MP
>   -MF /home/aj/build/glibc/x86/wcsmbs/wcsrchr-c.o.dt -MT /home/aj/build/glibc/x86/wcsmbs/wcsrchr
> -c.o
> In file included from ../sysdeps/i386/i686/multiarch/wcschr-c.c:8:0:
> ../wcsmbs/wcschr.c:26:1: warning: function declaration isnÂ’t a prototype [-Wstrict-prototypes]
> ../wcsmbs/wcschr.c:37:1: warning: data definition has no type or storage class [enabled by default]
> ../wcsmbs/wcschr.c:37:1: warning: type defaults to ‘int’ in declaration of ‘__hidden_ver1’ [enabled by default]
> ../wcsmbs/wcschr.c:37:1: warning: parameter names (without types) in function declaration [enabled by default]
>
> Could you fix these, please?


Fixed with the following patch which does the same like other i686
multiarch implementations. Tested on Linux/x86-64 and committing now
as obvious,

Andreas

2012-05-21  Andreas Jaeger  <aj@suse.de>

	* sysdeps/i386/i686/multiarch/wcschr-c.c: Redefine libc_hidden_def
	only if [SHARED]. Add prototype for __wcschr_ia32.

diff --git a/sysdeps/i386/i686/multiarch/wcschr-c.c 
b/sysdeps/i386/i686/multiarch/wcschr-c.c
index a63e50e..c23af26 100644
--- a/sysdeps/i386/i686/multiarch/wcschr-c.c
+++ b/sysdeps/i386/i686/multiarch/wcschr-c.c
@@ -1,8 +1,14 @@
+#include <wchar.h>
+
  #ifndef NOT_IN_libc
-# undef libc_hidden_def
-# define libc_hidden_def(name) \
-  __hidden_ver1 (__wcschr_ia32, __GI_wcschr, __wcschr_ia32);
+# ifdef SHARED
+#  undef libc_hidden_def
+#  define libc_hidden_def(name) \
+   __hidden_ver1 (__wcschr_ia32, __GI_wcschr, __wcschr_ia32);
+# endif
  # define WCSCHR  __wcschr_ia32
  #endif

+extern __typeof (wcschr) __wcschr_ia32;
+
  #include "wcsmbs/wcschr.c"

-- 
  Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
   SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
    GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
     GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126



More information about the Libc-alpha mailing list