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
> [email protected]
>
>
--
<https://www.alejandro-colomar.es/>
signature.asc
Description: PGP signature
