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

            Bug ID: 92378
           Summary: missing -Warray-bounds warning
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: tangyixuan at mail dot dlut.edu.cn
  Target Milestone: ---

Hi, I have two questions for the following:

1. Array a[3] is out of bound, there is no warnings compiled with -ftree-vrp
-Warray-bounds=1. When compiled with -Wall with O1/O2/O3, there is an
uninitialized warning.

2. The column is not precise for the uninitialized variant 'a[3]'.

$: cat s.c
  #include <stdio.h>
  int main()
  {
    int a[1]={0};
    printf("%d", a[3]);
  }

$: gcc-trunk -O2 -c -ftree-vrp -Warray-bounds=1  s.c
   no warnings here.

$: gcc-trunk -O0 -c -Wall  s.c
   no warnings here.

$: gcc-trunk -O2 -c -Wall s.c
s.c: In function ‘main’:
s.c:5:3: warning: ‘a[3]’ is used uninitialized in this function
[-Wuninitialized]
    5 |   printf("%d", a[3]);
       |   ^~~~~~~~~~~~~~~~~~


$: clang -Weverything -c s.c
s.c:5:16: warning: array index 3 is past the end of the array (which contains 1
element) [-Warray-bounds]
  printf("%d", a[3]);
                        ^ ~
s.c:4:3: note: array 'a' declared here
  int a[1]={0};
  ^
1 warning generated.

Reply via email to