https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102329

--- Comment #14 from Sam James <sjames at gcc dot gnu.org> ---
(In reply to Florian Weimer from comment #7)
> We need to suppress this warning for pthread_setspecific in glibc because it
> is incorrect there. There is currently no good way to implement that
> suppression unfortunately.

For completeness, in glibc:

commit b25b06749179d8d9a891381466e323a9dd2215f9
Author: Martin Sebor <mse...@redhat.com>
Date:   Tue Apr 27 19:05:30 2021 -0600

    Pass a valid pointer to pthread_setspecific to avoid GCC 11 warning.

commit a1561c3bbe8e72c6e44280d1eb5e529d2da4ecd0
Author: Martin Sebor <mse...@redhat.com>
Date:   Tue Apr 27 13:01:55 2021 -0600

    Add __attribute_access_none to disable GCC warnings [BZ #27714]

    GCC 11 warns when a pointer to an uninitialized object is passed
    to a function that takes a const-qualified argument.  This is done
    on the assumption that most such functions read from the object.
    For the rare case of a function that doesn't, GCC 11 extends
    attribute access to add a new mode called none.

    POSIX pthread_setspecific() is one such rare function that takes
    a const void* argument but that doesn't read from the object it
    points to.  To suppress the -Wmaybe-uninitialized issued by GCC
    11 when the address of an uninitialized object is passed to it
    (e.g., the result of malloc()), this change #defines
    __attr_access_none in cdefs.h and uses the macro on the function
    in sysdeps/htl/pthread.h and sysdeps/nptl/pthread.h.

Reply via email to