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

            Bug ID: 106424
           Summary: __attribute__ unused confuses -Wshadow when placed on
                    internal parameter of fn ptr
           Product: gcc
           Version: 11.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rusty at rustcorp dot com.au
  Target Milestone: ---

OK, this is a weird one.  I have some automated code which adds attributes
and it (overzealously) added it to the internal parameter of a callback:



    void func(char *arg,
          void (*cb)(char *arg __attribute__((__unused__))))
    { }


With -Wshadow=local (and -Wshadow) this gives a spurious warning:


foo.c:2:28: warning: declaration of ‘arg’ shadows a parameter [-Wshadow]
    2 |           void (*cb)(char *arg __attribute__((__unused__))))
      |                      ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
foo.c:1:17: note: shadowed declaration is here
    1 | void func(char *arg,
      |           ~~~~~~^~~

Reply via email to