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

            Bug ID: 89449
           Summary: False -Wsuggest-attribute=format warning
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
  Target Milestone: ---

This is a false positive as one can't actually put format attribute on the
function:

$ cat valist.c
#include <stdarg.h>

void logv(const char *format, va_list list) {
        __builtin_vprintf (format, list);
}

void
__attribute__ ((format (printf, 1, 2)))
logv2 (const char *format, va_list list)
{
        __builtin_vprintf (format, list);
}

$ g++ valist.c -c -Wsuggest-attribute=format
valist.c: In function ‘void logv(const char*, __va_list_tag*)’:
valist.c:4:33: warning: function ‘void logv(const char*, __va_list_tag*)’ might
be a candidate for ‘gnu_printf’ format attribute [-Wsuggest-attribute=format]
    4 |  __builtin_vprintf (format, list);
      |                                 ^
valist.c: At global scope:
valist.c:9:40: error: ‘format’ attribute argument 3 value ‘2’ does not refer to
a variable argument list
    9 | logv2 (const char *format, va_list list)
      |                                        ^
valist.c: In function ‘void logv2(const char*, __va_list_tag*)’:
valist.c:11:33: warning: function ‘void logv2(const char*, __va_list_tag*)’
might be a candidate for ‘gnu_printf’ format attribute
[-Wsuggest-attribute=format]
   11 |  __builtin_vprintf (format, list);
      |                                 ^

Reply via email to