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

            Bug ID: 98588
           Summary: VLA index formatted as <unknown> when it could be
                    expanded into an expression
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: trivial
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: msebor at gcc dot gnu.org
  Target Milestone: ---

Testing a fix for pr98578 reveals that accesses involving nontrivial indices to
VLAs and pointers to arrays aren't formatted as well as they could: they refer
to "<unknown>" as the index instead formatting the expression as "i + 1".  (The
spurious asterisk in the first warning and the missing parentheses in the
second are the subject of pr98587).

$ cat x.c && gcc -O2 -S -Wall x.c
void f (int);

void g (int n, int i)
{
  int a[n];
  f (a[i + 1]); 
}

void h (int n, int i)
{
  int (*p)[n] = (int (*)[n])__builtin_malloc (n);
  f ((*p)[i + 1]);
}
x.c: In function ‘g’:
x.c:6:3: warning: ‘*a[<unknown>]’ is used uninitialized [-Wuninitialized]
    6 |   f (a[i + 1]);
      |   ^~~~~~~~~~~~
x.c: In function ‘h’:
x.c:12:3: warning: ‘*p[<unknown>]’ is used uninitialized [-Wuninitialized]
   12 |   f ((*p)[i + 1]);
      |   ^~~~~~~~~~~~~~~

Reply via email to