]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/gcc.dg/vla-16.c
Update copyright years.
[thirdparty/gcc.git] / gcc / testsuite / gcc.dg / vla-16.c
1 /* Test for modifying and taking addresses of compound literals whose
2 variably modified types involve typeof. */
3 /* Origin: Joseph Myers <joseph@codesourcery.com> */
4 /* { dg-do run } */
5 /* { dg-options "-std=gnu99" } */
6
7 #include <stdarg.h>
8
9 extern void exit (int);
10 extern void abort (void);
11
12 int a[1];
13
14 void
15 f1 (void)
16 {
17 int i = 0;
18 int (**p)[1] = &(typeof (++i, (int (*)[i])a)){&a};
19 if (*p != &a)
20 abort ();
21 if (i != 1)
22 abort ();
23 }
24
25 void
26 f2 (void)
27 {
28 int i = 0;
29 (typeof (++i, (int (*)[i])a)){&a} = 0;
30 if (i != 1)
31 abort ();
32 }
33
34 void
35 f3 (void)
36 {
37 int i = 0;
38 (typeof (++i, (int (*)[i])a)){&a} += 1;
39 if (i != 1)
40 abort ();
41 }
42
43 void
44 f4 (void)
45 {
46 int i = 0;
47 --(typeof (++i, (int (*)[i])a)){&a + 1};
48 if (i != 1)
49 abort ();
50 }
51
52 void
53 f5 (void)
54 {
55 int i = 0;
56 (typeof (++i, (int (*)[i])a)){&a}++;
57 if (i != 1)
58 abort ();
59 }
60
61 int
62 main (void)
63 {
64 f1 ();
65 f2 ();
66 f3 ();
67 f4 ();
68 f5 ();
69 exit (0);
70 }