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

            Bug ID: 96290
           Summary: nonsensical bounds in VLA types in -Warray-bounds
           Product: gcc
           Version: 10.1.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: ---

VLA type mentioned in diagnostics involve nonsensical bounds.  The type should
instead be 'char[m][n]'

$ cat z.c && gcc -O2 -S -Wall z.c
#if 1
void f (void*);
void g (int m, int n)
{
  char a[m][n];
  a[-1][0] = 0;
  f (a);
}

z.c: In function ‘g’:
z.c:6:4: warning: array subscript -1 is below array bounds of ‘char[<U1ea0> +
1][<U1cf0> + 1]’ [-Warray-bounds]
    6 |   a[-1][0] = 0;
      |   ~^~~~


The C++ front end isn't much better:

z.c: In function ‘void g(int, int)’:
z.c:6:7: warning: array subscript -1 is below array bounds of ‘char
[(<anonymous> + 1)][(<anonymous> + 1)]’ [-Warray-bounds]
    6 |   a[-1][0] = 0;
      |   ~~~~^

Reply via email to