/* PR middle-end/82063 - issues with arguments enabled by -Wall { dg-do compile } { dg-options "-O2 -Walloca-larger-than=0 -Wvla-larger-than=0 -ftrack-macro-expansion=0" } */ extern void* alloca (__SIZE_TYPE__); void sink (void*); #define T(x) sink (x) void test_alloca (void) { /* Verify that alloca(0) is diagnosed even if the limit is zero. */ T (alloca (0)); /* { dg-warning "argument to .alloca. is zero" } */ T (alloca (1)); /* { dg-warning "argument to .alloca. is too large" } */ } void test_vla (unsigned n) { /* VLAs smaller than 32 bytes are optimized into ordinary arrays. */ if (n < 1 || 99 < n) n = 1; char a[n]; /* { dg-warning "argument to variable-length array " } */ T (a); }