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 g1(__SIZE_TYPE__ n)12g1 (__SIZE_TYPE__ n) 13 { 14 void *p; 15 if (n < LIMIT) 16 p = __builtin_alloca (n); // { dg-warning "'alloca' bound is unknown" } 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 g2(unsigned short n)26g2 (unsigned short n) 27 { 28 void *p; 29 if (n < SHORT_LIMIT) 30 p = __builtin_alloca (n); // { dg-warning "'alloca' bound is unknown" } 31 else 32 p = __builtin_malloc (n); 33 f (p); 34 } 35