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.