patch v2 add restrict to string.h methods

Joel Sherrill joel.sherrill@oarcorp.com
Fri Jul 19 13:30:00 GMT 2013


Hi

Documentation now says restrict not __restrict.

2013-07-18 Sahil Patnayakuni <sahilp@rtems.org>

     * libc/include/string.h, libc/string/memccpy.c, libc/string/memcpy.c,
     libc/string/stpcpy.c, libc/string/stpncpy.c, libc/string/strcat.c,
     libc/string/strncat.c, libc/string/strncpy.c, libc/string/strtok.c,
     libc/string/strtok_r.c, libc/string/strxfrm.c
     libc/machine/microblaze/strcpy.c, libc/machine/xscale/memcpy.c,
     libc/machine/cris/memcpy.c: Add __restrict to prototype to
     increase standards compliance.

-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel.sherrill@OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985

-------------- next part --------------
2013-07-18 Sahil Patnayakuni <sahilp@rtems.org>

	* libc/include/string.h, libc/string/memccpy.c, libc/string/memcpy.c,
	libc/string/stpcpy.c, libc/string/stpncpy.c, libc/string/strcat.c,
	libc/string/strncat.c, libc/string/strncpy.c, libc/string/strtok.c,
	libc/string/strtok_r.c, libc/string/strxfrm.c
	libc/machine/microblaze/strcpy.c, libc/machine/xscale/memcpy.c,
	libc/machine/cris/memcpy.c: Add __restrict to prototype to
	increase standards compliance.

Index: libc/include/string.h
===================================================================
RCS file: /cvs/src/src/newlib/libc/include/string.h,v
retrieving revision 1.34
diff -u -r1.34 string.h
--- libc/include/string.h	24 Jun 2013 15:11:24 -0000	1.34
+++ libc/include/string.h	19 Jul 2013 13:16:15 -0000
@@ -20,47 +20,47 @@
 
 _PTR 	 _EXFUN(memchr,(const _PTR, int, size_t));
 int 	 _EXFUN(memcmp,(const _PTR, const _PTR, size_t));
-_PTR 	 _EXFUN(memcpy,(_PTR, const _PTR, size_t));
+_PTR 	 _EXFUN(memcpy,(_PTR __restrict, const _PTR __restrict, size_t));
 _PTR	 _EXFUN(memmove,(_PTR, const _PTR, size_t));
 _PTR	 _EXFUN(memset,(_PTR, int, size_t));
-char 	*_EXFUN(strcat,(char *, const char *));
+char 	*_EXFUN(strcat,(char *__restrict, const char *__restrict));
 char 	*_EXFUN(strchr,(const char *, int));
 int	 _EXFUN(strcmp,(const char *, const char *));
 int	 _EXFUN(strcoll,(const char *, const char *));
-char 	*_EXFUN(strcpy,(char *, const char *));
+char 	*_EXFUN(strcpy,(char *__restrict, const char *__restrict));
 size_t	 _EXFUN(strcspn,(const char *, const char *));
 char 	*_EXFUN(strerror,(int));
 size_t	 _EXFUN(strlen,(const char *));
-char 	*_EXFUN(strncat,(char *, const char *, size_t));
+char 	*_EXFUN(strncat,(char *__restrict, const char *__restrict, size_t));
 int	 _EXFUN(strncmp,(const char *, const char *, size_t));
-char 	*_EXFUN(strncpy,(char *, const char *, size_t));
+char 	*_EXFUN(strncpy,(char *__restrict, const char *__restrict, size_t));
 char 	*_EXFUN(strpbrk,(const char *, const char *));
 char 	*_EXFUN(strrchr,(const char *, int));
 size_t	 _EXFUN(strspn,(const char *, const char *));
 char 	*_EXFUN(strstr,(const char *, const char *));
 
 #ifndef _REENT_ONLY
-char 	*_EXFUN(strtok,(char *, const char *));
+char 	*_EXFUN(strtok,(char *__restrict, const char *__restrict));
 #endif
 
-size_t	 _EXFUN(strxfrm,(char *, const char *, size_t));
+size_t	 _EXFUN(strxfrm,(char *__restrict, const char *__restrict, size_t));
 
 #ifndef __STRICT_ANSI__
-char 	*_EXFUN(strtok_r,(char *, const char *, char **));
+char 	*_EXFUN(strtok_r,(char *__restrict, const char *__restrict, char **__restrict));
 
 int	 _EXFUN(bcmp,(const void *, const void *, size_t));
 void	 _EXFUN(bcopy,(const void *, void *, size_t));
 void	 _EXFUN(bzero,(void *, size_t));
 int	 _EXFUN(ffs,(int));
 char 	*_EXFUN(index,(const char *, int));
-_PTR	 _EXFUN(memccpy,(_PTR, const _PTR, int, size_t));
+_PTR	 _EXFUN(memccpy,(_PTR __restrict, const _PTR __restrict, int, size_t));
 _PTR	 _EXFUN(mempcpy,(_PTR, const _PTR, size_t));
 _PTR	 _EXFUN(memmem, (const _PTR, size_t, const _PTR, size_t));
 _PTR 	 _EXFUN(memrchr,(const _PTR, int, size_t));
 _PTR 	 _EXFUN(rawmemchr,(const _PTR, int));
 char 	*_EXFUN(rindex,(const char *, int));
-char 	*_EXFUN(stpcpy,(char *, const char *));
-char 	*_EXFUN(stpncpy,(char *, const char *, size_t));
+char 	*_EXFUN(stpcpy,(char *__restrict, const char *__restrict));
+char 	*_EXFUN(stpncpy,(char *__restrict, const char *__restrict, size_t));
 int	 _EXFUN(strcasecmp,(const char *, const char *));
 char	*_EXFUN(strcasestr,(const char *, const char *));
 char 	*_EXFUN(strchrnul,(const char *, int));
Index: libc/machine/microblaze/strcpy.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/machine/microblaze/strcpy.c,v
retrieving revision 1.2
diff -u -r1.2 strcpy.c
--- libc/machine/microblaze/strcpy.c	16 Jul 2013 07:48:53 -0000	1.2
+++ libc/machine/microblaze/strcpy.c	19 Jul 2013 13:16:15 -0000
@@ -36,7 +36,7 @@
 
 ANSI_SYNOPSIS
 	#include <string.h>
-	char *strcpy(char *<[dst]>, const char *<[src]>);
+	char *strcpy(char *restrict <[dst]>, const char *restrict <[src]>);
 
 TRAD_SYNOPSIS
 	#include <string.h>
@@ -88,8 +88,8 @@
 
 char*
 _DEFUN (strcpy, (dst0, src0),
-	char *dst0 _AND
-	_CONST char *src0)
+	char *__restrict dst0 _AND
+	_CONST char *__restrict src0)
 {
 
 #ifndef HAVE_HW_PCMP
Index: libc/machine/xscale/memcpy.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/machine/xscale/memcpy.c,v
retrieving revision 1.2
diff -u -r1.2 memcpy.c
--- libc/machine/xscale/memcpy.c	20 Apr 2002 00:29:51 -0000	1.2
+++ libc/machine/xscale/memcpy.c	19 Jul 2013 13:16:15 -0000
@@ -8,7 +8,7 @@
 #include "xscale.h"
 
 void *
-memcpy (void *dst0, const void *src0, size_t len)
+memcpy (void *_restrict dst0, const void *_restrict src0, size_t len)
 {
   int dummy;
   asm volatile (
Index: libc/machine/cris/memcpy.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/machine/cris/memcpy.c,v
retrieving revision 1.1
diff -u -r1.1 memcpy.c
--- libc/machine/cris/memcpy.c	27 Jan 2005 23:54:44 -0000	1.1
+++ libc/machine/cris/memcpy.c	19 Jul 2013 13:16:15 -0000
@@ -40,7 +40,7 @@
 __asm__ (".syntax no_register_prefix");
 
 void *
-memcpy(void *pdst, const void *psrc, size_t pn)
+memcpy(void *__restrict pdst, const void *__restrict psrc, size_t pn)
 {
   /* Now we want the parameters put in special registers.
      Make sure the compiler is able to make something useful of this.
Index: libc/string/memccpy.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/memccpy.c,v
retrieving revision 1.2
diff -u -r1.2 memccpy.c
--- libc/string/memccpy.c	22 Sep 2010 03:15:07 -0000	1.2
+++ libc/string/memccpy.c	19 Jul 2013 13:16:15 -0000
@@ -4,7 +4,7 @@
 
 ANSI_SYNOPSIS
         #include <string.h>
-        void* memccpy(void *<[out]>, const void *<[in]>, 
+        void* memccpy(void *restrict <[out]>, const void *restrict <[in]>, 
                       int <[endchar]>, size_t <[n]>);
 
 TRAD_SYNOPSIS
@@ -64,8 +64,8 @@
 
 _PTR
 _DEFUN (memccpy, (dst0, src0, endchar, len0),
-	_PTR dst0 _AND
-	_CONST _PTR src0 _AND
+	_PTR __restrict dst0 _AND
+	_CONST _PTR __restrict src0 _AND
 	int endchar0 _AND
 	size_t len0)
 {
Index: libc/string/memcpy.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/memcpy.c,v
retrieving revision 1.3
diff -u -r1.3 memcpy.c
--- libc/string/memcpy.c	22 Sep 2010 03:15:07 -0000	1.3
+++ libc/string/memcpy.c	19 Jul 2013 13:16:15 -0000
@@ -4,7 +4,8 @@
 
 ANSI_SYNOPSIS
         #include <string.h>
-        void* memcpy(void *<[out]>, const void *<[in]>, size_t <[n]>);
+        void* memcpy(void *restrict <[out]>, const void *restrict <[in]>,
+                     size_t <[n]>);
 
 TRAD_SYNOPSIS
         #include <string.h>
@@ -51,8 +52,8 @@
 
 _PTR
 _DEFUN (memcpy, (dst0, src0, len0),
-	_PTR dst0 _AND
-	_CONST _PTR src0 _AND
+	_PTR __restrict dst0 _AND
+	_CONST _PTR __restrict src0 _AND
 	size_t len0)
 {
 #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)
Index: libc/string/stpcpy.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/stpcpy.c,v
retrieving revision 1.1
diff -u -r1.1 stpcpy.c
--- libc/string/stpcpy.c	28 Jun 2007 17:07:23 -0000	1.1
+++ libc/string/stpcpy.c	19 Jul 2013 13:16:15 -0000
@@ -7,7 +7,7 @@
 
 ANSI_SYNOPSIS
 	#include <string.h>
-	char *stpcpy(char *<[dst]>, const char *<[src]>);
+	char *stpcpy(char *restrict <[dst]>, const char *restrict <[src]>);
 
 TRAD_SYNOPSIS
 	#include <string.h>
@@ -60,8 +60,8 @@
 
 char*
 _DEFUN (stpcpy, (dst, src),
-	char *dst _AND
-	_CONST char *src)
+	char *__restrict dst _AND
+	_CONST char *__restrict src)
 {
 #if !defined(PREFER_SIZE_OVER_SPEED) && !defined(__OPTIMIZE_SIZE__)
   long *aligned_dst;
Index: libc/string/stpncpy.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/stpncpy.c,v
retrieving revision 1.1
diff -u -r1.1 stpncpy.c
--- libc/string/stpncpy.c	28 Jun 2007 17:07:23 -0000	1.1
+++ libc/string/stpncpy.c	19 Jul 2013 13:16:15 -0000
@@ -7,7 +7,8 @@
 
 ANSI_SYNOPSIS
 	#include <string.h>
-	char *stpncpy(char *<[dst]>, const char *<[src]>, size_t <[length]>);
+	char *stpncpy(char *restrict <[dst]>, const char *restrict <[src]>,
+                      size_t <[length]>);
 
 TRAD_SYNOPSIS
 	#include <string.h>
@@ -68,8 +69,8 @@
 
 char *
 _DEFUN (stpncpy, (dst, src),
-	char *dst _AND
-	_CONST char *src _AND
+	char *__restrict dst _AND
+	_CONST char *__restrict src _AND
 	size_t count)
 {
   char *ret = NULL;
Index: libc/string/strcat.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/strcat.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 strcat.c
--- libc/string/strcat.c	17 Feb 2000 19:39:48 -0000	1.1.1.1
+++ libc/string/strcat.c	19 Jul 2013 13:16:15 -0000
@@ -7,7 +7,7 @@
 
 ANSI_SYNOPSIS
 	#include <string.h>
-	char *strcat(char *<[dst]>, const char *<[src]>);
+	char *strcat(char *restrict <[dst]>, const char *restrict <[src]>);
 
 TRAD_SYNOPSIS
 	#include <string.h>
@@ -61,8 +61,8 @@
 
 char *
 _DEFUN (strcat, (s1, s2),
-	char *s1 _AND
-	_CONST char *s2)
+	char *__restrict s1 _AND
+	_CONST char *__restrict s2)
 {
 #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)
   char *s = s1;
Index: libc/string/strncat.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/strncat.c,v
retrieving revision 1.2
diff -u -r1.2 strncat.c
--- libc/string/strncat.c	28 Oct 2005 21:21:07 -0000	1.2
+++ libc/string/strncat.c	19 Jul 2013 13:16:15 -0000
@@ -7,7 +7,8 @@
 
 ANSI_SYNOPSIS
 	#include <string.h>
-	char *strncat(char *<[dst]>, const char *<[src]>, size_t <[length]>);
+	char *strncat(char *<restrict [dst]>, const char *<restrict [src]>,
+                      size_t <[length]>);
 
 TRAD_SYNOPSIS
 	#include <string.h>
@@ -65,8 +66,8 @@
 
 char *
 _DEFUN (strncat, (s1, s2, n),
-	char *s1 _AND
-	_CONST char *s2 _AND
+	char *__restrict s1 _AND
+	_CONST char *__restrict s2 _AND
 	size_t n)
 {
 #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)
Index: libc/string/strncpy.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/strncpy.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 strncpy.c
--- libc/string/strncpy.c	17 Feb 2000 19:39:48 -0000	1.1.1.1
+++ libc/string/strncpy.c	19 Jul 2013 13:16:15 -0000
@@ -7,7 +7,8 @@
 
 ANSI_SYNOPSIS
 	#include <string.h>
-	char *strncpy(char *<[dst]>, const char *<[src]>, size_t <[length]>);
+	char *strncpy(char *restrict <[dst]>, const char *restrict <[src]>,
+                      size_t <[length]>);
 
 TRAD_SYNOPSIS
 	#include <string.h>
@@ -66,8 +67,8 @@
 
 char *
 _DEFUN (strncpy, (dst0, src0),
-	char *dst0 _AND
-	_CONST char *src0 _AND
+	char *__restrict dst0 _AND
+	_CONST char *__restrict src0 _AND
 	size_t count)
 {
 #if defined(PREFER_SIZE_OVER_SPEED) || defined(__OPTIMIZE_SIZE__)
Index: libc/string/strtok.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/strtok.c,v
retrieving revision 1.7
diff -u -r1.7 strtok.c
--- libc/string/strtok.c	29 Apr 2013 21:06:23 -0000	1.7
+++ libc/string/strtok.c	19 Jul 2013 13:16:15 -0000
@@ -13,9 +13,11 @@
 
 ANSI_SYNOPSIS
 	#include <string.h>
-      	char *strtok(char *<[source]>, const char *<[delimiters]>)
-      	char *strtok_r(char *<[source]>, const char *<[delimiters]>,
-			char **<[lasts]>)
+      	char *strtok(char *restrict <[source]>,
+                     const char *restrict <[delimiters]>)
+      	char *strtok_r(char *restrict <[source]>,
+                       const char *restrict <[delimiters]>,
+                       char **<[lasts]>)
       	char *strsep(char **<[source_ptr]>, const char *<[delimiters]>)
 
 TRAD_SYNOPSIS
@@ -92,8 +94,8 @@
 
 char *
 _DEFUN (strtok, (s, delim),
-	register char *s _AND
-	register const char *delim)
+	register char *__restrict s _AND
+	register const char *__restrict delim)
 {
 	struct _reent *reent = _REENT;
 
Index: libc/string/strtok_r.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/strtok_r.c,v
retrieving revision 1.3
diff -u -r1.3 strtok_r.c
--- libc/string/strtok_r.c	29 Aug 2002 19:47:43 -0000	1.3
+++ libc/string/strtok_r.c	19 Jul 2013 13:16:15 -0000
@@ -91,9 +91,9 @@
 
 char *
 _DEFUN (strtok_r, (s, delim, lasts),
-	register char *s _AND
-	register const char *delim _AND
-	char **lasts)
+	register char *__restrict s _AND
+	register const char *__restrict delim _AND
+	char **__restrict lasts)
 {
 	return __strtok_r (s, delim, lasts, 1);
 }
Index: libc/string/strxfrm.c
===================================================================
RCS file: /cvs/src/src/newlib/libc/string/strxfrm.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 strxfrm.c
--- libc/string/strxfrm.c	17 Feb 2000 19:39:48 -0000	1.1.1.1
+++ libc/string/strxfrm.c	19 Jul 2013 13:16:15 -0000
@@ -7,7 +7,8 @@
 
 ANSI_SYNOPSIS
 	#include <string.h>
-	size_t strxfrm(char *<[s1]>, const char *<[s2]>, size_t <[n]>);
+	size_t strxfrm(char *restrict <[s1]>, const char *restrict <[s2]>,
+                       size_t <[n]>);
 
 TRAD_SYNOPSIS
 	#include <string.h>
@@ -52,8 +53,8 @@
 
 size_t
 _DEFUN (strxfrm, (s1, s2, n),
-	char *s1 _AND
-	_CONST char *s2 _AND
+	char *__restrict s1 _AND
+	_CONST char *__restrict s2 _AND
 	size_t n)
 {
   size_t res;


More information about the Newlib mailing list