libcpp, c, middle-end: Optimize initializers using #embed in C
[official-gcc.git] / gcc / testsuite / gcc.dg / Wvla-larger-than-3.c
blob70011f1d3829eb9d549112e827e760efa5a3b844
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" } */
7 void f (void *, ...);
9 void nowarn_vla_int (int n)
11 char a[n];
13 if (n < 1234)
14 n = 1234;
16 char b[n];
17 f (a, b);
20 void nowarn_vla_uint (unsigned n)
22 char a[n];
23 f (a);
25 if (n < 2345)
26 n = 2345;
28 char b[n];
29 f (a, b);
32 void nowarn_vla_long (long n)
34 char a[n];
36 if (n < 1234)
37 n = 1234;
39 char b[n];
40 f (a, b);
43 void nowarn_vla_ulong (unsigned long n)
45 char a[n];
46 f (a);
48 if (n < 2345)
49 n = 2345;
51 char b[n];
52 f (a, b);
55 /* Verify that a VLA whose size is definitely in excess of PTRDIFF_MAX
56 is diagnosed by default. */
58 void warn_vla (__PTRDIFF_TYPE__ n)
60 int a[n];
61 f (a);
63 if (n <= __PTRDIFF_MAX__)
64 n = __PTRDIFF_MAX__;
66 int b[n]; /* { dg-warning "argument to variable-length array is too large" } */
67 f (a, b);