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

            Bug ID: 98587
           Summary: incorrect format of VLAs and pointer to array for
                    MEM_REF
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          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 MEM_REF accesses to VLAs and pointers to
arrays aren't formatted quite correctly.  The VLA format has a spurious
asterisk and the dereference of the pointer to array is not parenthesized as it
should be.

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

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

void h (int n)
{
  int (*p)[n] = __builtin_malloc (n);

  f ((*p)[1]);
}
x.c: In function ‘g’:
x.c:6:3: warning: ‘*a[1]’ is used uninitialized [-Wuninitialized]
    6 |   f (a[1]);
      |   ^~~~~~~~
x.c: In function ‘h’:
x.c:13:3: warning: ‘*p[1]’ is used uninitialized [-Wuninitialized]
   13 |   f ((*p)[1]);
      |   ^~~~~~~~~~~

Reply via email to