Hi Joseph, On Fri, Jul 26, 2024 at 08:30:33PM GMT, Joseph Myers wrote: > On Fri, 26 Jul 2024, Alejandro Colomar via Gcc wrote: > > > I don't see why it should not apply to void*. memcpy(3) should get this > > attribute: > > > > [[alx::restrict(1)]] > > [[alx::restrict(2)]] > > void *memcpy(void *dst, const void *src, size_t n); > > That would disallow copying between disjoint subarrays within the same > toplevel object (and there's no way to specify an array size for void *), > which hardly seems right. Hmmm, I sometimes forget that ISO C is so painful about void. Has WG14 discussed in the past about the GNU extension that defines sizeof(void) == 1? Maybe wording that also considers compiler-specific attributes and extensions would allow for the following: [[gnu::access(write_only, 1, 3)]] [[gnu::access(read_only, 2, 3)]] [[alx::restrict(1)]] [[alx::restrict(2)]] void *memcpy(void *dst, const void *src, size_t n); The GNU attribute specifies the number of elements of the subarrays, and the GNU extension sizeof(void)==1 specifies the size of each element. That gives us the size of the subarrays to be considered for the restrictness. So, ISO C wouldn't be allowed to mark malloc(3) as [[alx::restrict]] (unless they add these GNU extensions), but GNU C could. > > BTW, the author of n2529 didn't follow up, right? I'd like that in, so > > I'll prepare something after n2906 is merged. Martin, would you mind > > pinging me about it? > > See reflector message SC22WG14.18575, 17 Nov 2020 (the former convenor > replying when I asked about just that paper). Where can I find reflector messages? > As far as I know the author > has not yet provided an updated version / asked for it to be added to a > meeting agenda. I think you mentioned that to me some time ago. I guess I'll take over then. I'll ask for a number to propose _Nitems(). And another one to propose that [n] means the same as [static n] except for the nonnull property of static. Have a lovely night! Alex > > -- > Joseph S. Myers > josmyers@xxxxxxxxxx > > -- <https://www.alejandro-colomar.es/>
Attachment:
signature.asc
Description: PGP signature