https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100670
--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> --- Note btw that clang does not generate a warning: ... $ clang -c -Wall -O0 -g -Werror foo.c -DTYPE="void *" $ ... which means the attribute works, because if we remove the attribute we have instead: ... $ clang -c -Wall -O0 -g -Werror foo.c -DTYPE="void *" foo.c:4:1: error: unused function 'foo' [-Werror,-Wunused-function] foo (void) ^ 1 error generated. ...