(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
Wvla-larger-than-3.c
       1  /* Verify that VLA definitions with an unknown upper bound don't trigger
       2     -Wvla-larger-than= warnings by default.
       3     { dg-do compile }
       4     { dg-require-effective-target alloca }
       5     { dg-options "-O2 -Wall" } */
       6  
       7  void f (void *, ...);
       8  
       9  void nowarn_vla_int (int n)
      10  {
      11    char a[n];
      12  
      13    if (n < 1234)
      14      n = 1234;
      15  
      16    char b[n];
      17    f (a, b);
      18  }
      19  
      20  void nowarn_vla_uint (unsigned n)
      21  {
      22    char a[n];
      23    f (a);
      24  
      25    if (n < 2345)
      26      n = 2345;
      27  
      28    char b[n];
      29    f (a, b);
      30  }
      31  
      32  void nowarn_vla_long (long n)
      33  {
      34    char a[n];
      35  
      36    if (n < 1234)
      37      n = 1234;
      38  
      39    char b[n];
      40    f (a, b);
      41  }
      42  
      43  void nowarn_vla_ulong (unsigned long n)
      44  {
      45    char a[n];
      46    f (a);
      47  
      48    if (n < 2345)
      49      n = 2345;
      50  
      51    char b[n];
      52    f (a, b);
      53  }
      54  
      55  /* Verify that a VLA whose size is definitely in excess of PTRDIFF_MAX
      56     is diagnosed by default.  */
      57  
      58  void warn_vla (__PTRDIFF_TYPE__ n)
      59  {
      60    int a[n];
      61    f (a);
      62  
      63    if (n <= __PTRDIFF_MAX__)
      64      n = __PTRDIFF_MAX__;
      65  
      66    int b[n];   /* { dg-warning "argument to variable-length array is too large" } */
      67    f (a, b);
      68  }