This is the mail archive of the
mailing list for the glibc project.
Re: Disable -Wrestrict for two nptl/tst-attr3.c tests [committed]
- From: Florian Weimer <fweimer at redhat dot com>
- To: Joseph Myers <joseph at codesourcery dot com>, libc-alpha at sourceware dot org
- Date: Tue, 19 Dec 2017 10:48:21 +0100
- Subject: Re: Disable -Wrestrict for two nptl/tst-attr3.c tests [committed]
- Authentication-results: sourceware.org; auth=none
- References: <alpine.DEB.firstname.lastname@example.org>
On 12/18/2017 11:56 PM, Joseph Myers wrote:
nptl/tst-attr3 fails to build with GCC mainline because of
(deliberate) aliasing between the second (attributes) and fourth
(argument to thread start routine) arguments to pthread_create.
Although both those arguments are restrict-qualified in POSIX,
pthread_create does not actually dereference its fourth argument; it's
an opaque pointer passed to the thread start routine. Thus, the
aliasing is actually valid in this case,
I think the restrict requirements extend to called functions as well,
due to the way the execution of a block is defined in C11 (“an execution
of [a block] B means that portion of the execution of the program that
would correspond to the lifetime of an object with scalar type and
automatic storage duration associated with B”).
The proper fix seems to be to remove the restrict qualifier from the
last argument of pthread_create, considering that the thread start
routine argument lacks the restrict qualifier, too.