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

            Bug ID: 87773
           Summary: %s directive argument is null missing inlining context
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

The warning below is missing inlining context.  Worse, because it points to the
format string rather than the call, in complex code it could be tricky to
figure out where it's coming from.

Finally, it should probably be controlled by -Wnonnull like other such
warnings.

$ cat t.c && gcc -O2 -S -Wall t.c
void f (char *d, const char *f, const char *p)
{
  __builtin_sprintf (d, f, p);
}

void g (char *d)
{
  const char *f = "%s";

  __builtin_sprintf (d, f, 0);
}
t.c: In function ā€˜g’:
t.c:8:20: warning: ā€˜%s’ directive argument is null [-Wformat-overflow=]
    8 |   const char *f = "%s";
      |                    ^~

Reply via email to