From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13784 invoked by alias); 10 Dec 2010 12:12:24 -0000 Received: (qmail 13642 invoked by uid 22791); 10 Dec 2010 12:12:21 -0000 X-SWARE-Spam-Status: No, hits=-6.1 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,TW_CP,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 10 Dec 2010 12:11:32 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oBACBSEx004028 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 10 Dec 2010 07:11:28 -0500 Received: from hase (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id oBACBQat030416 for ; Fri, 10 Dec 2010 07:11:27 -0500 From: Andreas Schwab To: libc-hacker@sourceware.org Subject: [PATCH] Fix use of restrict in wchar.h X-Yow: .. here I am in 53 B.C. and all I want is a dill pickle!! Date: Fri, 10 Dec 2010 12:12:00 -0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Mailing-List: contact libc-hacker-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sourceware.org X-SW-Source: 2010-12/txt/msg00006.txt.bz2 2010-12-10 Andreas Schwab * wcsmbs/wchar.h (wcpcpy, wcpncpy): Add __restrict. * wcsmbs/bits/wchar2.h (__wmemmove_chk_warn, wmemmove, wmemset): Remove __restrict. (wcscpy, __wcpcpy_chk, __wcpcpy_alias, wcpcpy, wcsncpy, wcpncpy) (wcscat, wcsncat, __wcrtomb_chk, wcrtomb): Add __restrict. --- wcsmbs/bits/wchar2.h | 44 ++++++++++++++++++++++++-------------------- wcsmbs/wchar.h | 6 ++++-- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/wcsmbs/bits/wchar2.h b/wcsmbs/bits/wchar2.h index 2ec4ce1..c38eaa3 100644 --- a/wcsmbs/bits/wchar2.h +++ b/wcsmbs/bits/wchar2.h @@ -1,5 +1,5 @@ /* Checking macros for wchar functions. - Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2007, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -60,15 +60,13 @@ extern wchar_t *__REDIRECT_NTH (__wmemmove_alias, (wchar_t *__s1, __const wchar_t *__s2, size_t __n), wmemmove); extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn, - (wchar_t *__restrict __s1, - __const wchar_t *__restrict __s2, size_t __n, - size_t __ns1), __wmemmove_chk) + (wchar_t *__s1, __const wchar_t *__s2, + size_t __n, size_t __ns1), __wmemmove_chk) __warnattr ("wmemmove called with length bigger than size of destination " "buffer"); __extern_always_inline wchar_t * -__NTH (wmemmove (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2, - size_t __n)) +__NTH (wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)) { if (__bos0 (__s1) != (size_t) -1) { @@ -129,7 +127,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemset_chk_warn, "buffer"); __extern_always_inline wchar_t * -__NTH (wmemset (wchar_t *__restrict __s, wchar_t __c, size_t __n)) +__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n)) { if (__bos0 (__s) != (size_t) -1) { @@ -152,7 +150,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy_alias, __const wchar_t *__restrict __src), wcscpy); __extern_always_inline wchar_t * -__NTH (wcscpy (wchar_t *__dest, __const wchar_t *__src)) +__NTH (wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) { if (__bos (__dest) != (size_t) -1) return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); @@ -160,14 +158,15 @@ __NTH (wcscpy (wchar_t *__dest, __const wchar_t *__src)) } -extern wchar_t *__wcpcpy_chk (wchar_t *__dest, __const wchar_t *__src, +extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest, + __const wchar_t *__restrict __src, size_t __destlen) __THROW; -extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, (wchar_t *__dest, - __const wchar_t *__src), - wcpcpy); +extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, + (wchar_t *__restrict __dest, + __const wchar_t *__restrict __src), wcpcpy); __extern_always_inline wchar_t * -__NTH (wcpcpy (wchar_t *__dest, __const wchar_t *__src)) +__NTH (wcpcpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) { if (__bos (__dest) != (size_t) -1) return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); @@ -190,7 +189,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsncpy_chk_warn, "buffer"); __extern_always_inline wchar_t * -__NTH (wcsncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) +__NTH (wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, + size_t __n)) { if (__bos (__dest) != (size_t) -1) { @@ -220,7 +220,8 @@ extern wchar_t *__REDIRECT_NTH (__wcpncpy_chk_warn, "buffer"); __extern_always_inline wchar_t * -__NTH (wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)) +__NTH (wcpncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, + size_t __n)) { if (__bos (__dest) != (size_t) -1) { @@ -243,7 +244,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscat_alias, __const wchar_t *__restrict __src), wcscat); __extern_always_inline wchar_t * -__NTH (wcscat (wchar_t *__dest, __const wchar_t *__src)) +__NTH (wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src)) { if (__bos (__dest) != (size_t) -1) return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t)); @@ -260,7 +261,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsncat_alias, size_t __n), wcsncat); __extern_always_inline wchar_t * -__NTH (wcsncat (wchar_t *__dest, __const wchar_t *__src, size_t __n)) +__NTH (wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src, + size_t __n)) { if (__bos (__dest) != (size_t) -1) return __wcsncat_chk (__dest, __src, __n, @@ -428,14 +430,16 @@ fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream) #endif -extern size_t __wcrtomb_chk (char *__s, wchar_t __wchar, mbstate_t *__p, - size_t __buflen) __THROW __wur; +extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar, + mbstate_t *__restrict __p, + size_t __buflen) __THROW __wur; extern size_t __REDIRECT_NTH (__wcrtomb_alias, (char *__restrict __s, wchar_t __wchar, mbstate_t *__restrict __ps), wcrtomb) __wur; __extern_always_inline __wur size_t -__NTH (wcrtomb (char *__s, wchar_t __wchar, mbstate_t *__ps)) +__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar, + mbstate_t *__restrict __ps)) { /* We would have to include to get a definition of MB_LEN_MAX. But this would only disturb the namespace. So we define our own diff --git a/wcsmbs/wchar.h b/wcsmbs/wchar.h index 061b105..ca8ba80 100644 --- a/wcsmbs/wchar.h +++ b/wcsmbs/wchar.h @@ -561,11 +561,13 @@ extern long double wcstold_l (__const wchar_t *__restrict __nptr, #ifdef __USE_XOPEN2K8 /* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */ -extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW; +extern wchar_t *wcpcpy (wchar_t *__restrict __dest, + __const wchar_t *__restrict __src) __THROW; /* Copy no more than N characters of SRC to DEST, returning the address of the last character written into DEST. */ -extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n) +extern wchar_t *wcpncpy (wchar_t *__restrict __dest, + __const wchar_t *__restrict __src, size_t __n) __THROW; #endif /* use GNU */ -- 1.7.2.3 -- Andreas Schwab, schwab@redhat.com GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E "And now for something completely different."