(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
Warray-bounds-64.c
       1  /* PR c/50584 - No warning for passing small array to C99 static array
       2     declarator
       3  
       4     Verify that out-of-bounds accesses to array arguments are diagnosed,
       5     both to ordinary array parameters with constant bounds and to array
       6     parameters declared static.  This is the converse of what PR 50584
       7     asks for.
       8  
       9     { dg-do compile }
      10     { dg-options "-O2 -Wall -Warray-parameter -Wno-vla-parameter" } */
      11  
      12  #define NOIPA __attribute__  ((noipa))
      13  
      14  void sink (void*, ...);
      15  
      16  #define T(...) sink (0, __VA_ARGS__)
      17  
      18  
      19  NOIPA void fca1 (char a[1])
      20  {
      21    T (a[0]);
      22    T (a[1]);                   // { dg-warning "-Warray-bounds" }
      23  }
      24  
      25  NOIPA void fcas1 (char a[static 1])
      26  {
      27    T (a[0]);
      28    T (a[1]);                   // { dg-warning "-Warray-bounds" }
      29  }
      30  
      31  NOIPA void fca2 (char a[2])
      32  {
      33    T (a[0]); T (a[1]);
      34    T (a[2]);                   // { dg-warning "-Warray-bounds" }
      35  }
      36  
      37  NOIPA void fcas2 (char a[static 2])
      38  {
      39    T (a[0]); T (a[1]);
      40    T (a[2]);                   // { dg-warning "-Warray-bounds" }
      41  }
      42  
      43  NOIPA void fca3 (char a[3])
      44  {
      45    T (a[0]); T (a[1]); T (a[2]);
      46    T (a[3]);                   // { dg-warning "-Warray-bounds" }
      47  }
      48  
      49  NOIPA void fcas3 (char a[static 3])
      50  {
      51    T (a[0]); T (a[1]); T (a[2]);
      52    T (a[3]);                   // { dg-warning "-Warray-bounds" }
      53  }
      54  
      55  
      56  NOIPA void fca1_1 (char a[1][1])
      57  {
      58    T (a[0][0]);
      59    T (a[0][1]);                // { dg-warning "-Warray-bounds" }
      60  }