Forbid declarations after label, case and default statements.
[cparser] / parsetest / vla.c
1 int puts(const char *str);
2 void *memcpy(void *dest, const void *src, unsigned int n);
3
4 int get_size(void)
5 {
6         puts("sideeffect");
7         return 10;
8 }
9
10 int get_size2(void)
11 {
12         puts("sideeffect2");
13         return 10;
14 }
15
16 int gk[10];
17
18 int main(int argc, char **argv)
19 {
20         int k[get_size()];
21         int c[argc][argc];
22         int z[10];
23
24         if(sizeof(k)/sizeof(int) != 10)
25                 return 1;
26         if(sizeof(int[get_size2()])/sizeof(int) != 10)
27                 return 2;
28         sizeof(c[puts("effect")]);
29         sizeof(c[puts("effect2")][puts("but not this time")]);
30         sizeof(z[puts("no effect")]);
31
32         k[5] = 42;
33         k[2] = 10;
34         memcpy(gk, k, sizeof(gk));
35
36         return 0;
37 }