(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
Walloca-3.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target alloca } */
       3  /* { dg-options "-Walloca-larger-than=2000 -O2" } */
       4  
       5  void f (void *);
       6  
       7  __SIZE_TYPE__ LIMIT;
       8  
       9  // Warn when there is an alloca bound, but it is an unknown bound.
      10  
      11  void
      12  g1 (__SIZE_TYPE__ n)
      13  {
      14    void *p;
      15    if (n < LIMIT)
      16      p = __builtin_alloca (n); // { dg-warning "may be too large" }
      17    else
      18      p = __builtin_malloc (n);
      19    f (p);
      20  }
      21  
      22  // Similar to the above, but do not get confused by the upcast.
      23  
      24  unsigned short SHORT_LIMIT;
      25  void
      26  g2 (unsigned short n)
      27  {
      28    void *p;
      29    if (n < SHORT_LIMIT)
      30      p = __builtin_alloca (n); // { dg-warning "may be too large" }
      31    else
      32      p = __builtin_malloc (n);
      33    f (p);
      34  }