Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/vla-16.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
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 } |