annotate gcc/testsuite/gcc.dg/c99-vla-2.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Test composite type of VLA and fixed-size array: should be the
kono
parents:
diff changeset
2 fixed-size type. Bug 22192. */
kono
parents:
diff changeset
3 /* Origin: Joseph Myers <joseph@codesourcery.com> */
kono
parents:
diff changeset
4 /* { dg-do compile } */
kono
parents:
diff changeset
5 /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 /* Test that the given expression (of pointer-to-array type) points to
kono
parents:
diff changeset
8 the right sort of array. */
kono
parents:
diff changeset
9 #define TEST_FIXED_SIZE(a) do { static int x[sizeof(*(a))]; (void)x; } while (0)
kono
parents:
diff changeset
10 #define TEST_VLA(a) do { (void)sizeof(*(a)); (void)(1 ? (a) : (__typeof__(**(a)) (*)[1])0); (void)(1 ? (a) : (__typeof__(**(a)) (*)[2])0); } while (0)
kono
parents:
diff changeset
11 #define TEST_INCOMPLETE(a) do { __typeof__(*(a)) x = { 0 }; (void)x; (void)(1 ? a : (__typeof__(**(a)) (*)[1])0); (void)(1 ? a : (__typeof__(**(a)) (*)[2])0); } while (0)
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 #define TEST_COMP_FIX(a, b) TEST_FIXED_SIZE(i ? a : b)
kono
parents:
diff changeset
14 #define TEST_COMP_VLA(a, b) TEST_VLA(i ? a : b)
kono
parents:
diff changeset
15 #define TEST_COMP_INC(a, b) TEST_INCOMPLETE(i ? a : b)
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 void
kono
parents:
diff changeset
18 foo (int i, int j)
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 typedef int I;
kono
parents:
diff changeset
21 int (*pf)[2];
kono
parents:
diff changeset
22 int (*pv)[i];
kono
parents:
diff changeset
23 int (*pi)[];
kono
parents:
diff changeset
24 I (*pfI)[2];
kono
parents:
diff changeset
25 I (*pvI)[i];
kono
parents:
diff changeset
26 I (*piI)[];
kono
parents:
diff changeset
27 TEST_COMP_FIX(pf, pf);
kono
parents:
diff changeset
28 TEST_COMP_FIX(pf, pv);
kono
parents:
diff changeset
29 TEST_COMP_FIX(pf, pi);
kono
parents:
diff changeset
30 TEST_COMP_FIX(pf, pfI);
kono
parents:
diff changeset
31 TEST_COMP_FIX(pf, pvI);
kono
parents:
diff changeset
32 TEST_COMP_FIX(pf, piI);
kono
parents:
diff changeset
33 TEST_COMP_FIX(pv, pf);
kono
parents:
diff changeset
34 TEST_COMP_VLA(pv, pv);
kono
parents:
diff changeset
35 TEST_COMP_VLA(pv, pi);
kono
parents:
diff changeset
36 TEST_COMP_FIX(pv, pfI);
kono
parents:
diff changeset
37 TEST_COMP_VLA(pv, pvI);
kono
parents:
diff changeset
38 TEST_COMP_VLA(pv, piI);
kono
parents:
diff changeset
39 TEST_COMP_FIX(pi, pf);
kono
parents:
diff changeset
40 TEST_COMP_VLA(pi, pv);
kono
parents:
diff changeset
41 TEST_COMP_INC(pi, pi);
kono
parents:
diff changeset
42 TEST_COMP_FIX(pi, pfI);
kono
parents:
diff changeset
43 TEST_COMP_VLA(pi, pvI);
kono
parents:
diff changeset
44 TEST_COMP_INC(pi, piI);
kono
parents:
diff changeset
45 TEST_COMP_FIX(pfI, pf);
kono
parents:
diff changeset
46 TEST_COMP_FIX(pfI, pv);
kono
parents:
diff changeset
47 TEST_COMP_FIX(pfI, pi);
kono
parents:
diff changeset
48 TEST_COMP_FIX(pfI, pfI);
kono
parents:
diff changeset
49 TEST_COMP_FIX(pfI, pvI);
kono
parents:
diff changeset
50 TEST_COMP_FIX(pfI, piI);
kono
parents:
diff changeset
51 TEST_COMP_FIX(pvI, pf);
kono
parents:
diff changeset
52 TEST_COMP_VLA(pvI, pv);
kono
parents:
diff changeset
53 TEST_COMP_VLA(pvI, pi);
kono
parents:
diff changeset
54 TEST_COMP_FIX(pvI, pfI);
kono
parents:
diff changeset
55 TEST_COMP_VLA(pvI, pvI);
kono
parents:
diff changeset
56 TEST_COMP_VLA(pvI, piI);
kono
parents:
diff changeset
57 TEST_COMP_FIX(piI, pf);
kono
parents:
diff changeset
58 TEST_COMP_VLA(piI, pv);
kono
parents:
diff changeset
59 TEST_COMP_INC(piI, pi);
kono
parents:
diff changeset
60 TEST_COMP_FIX(piI, pfI);
kono
parents:
diff changeset
61 TEST_COMP_VLA(piI, pvI);
kono
parents:
diff changeset
62 TEST_COMP_INC(piI, piI);
kono
parents:
diff changeset
63 typedef int (*Ti)[i];
kono
parents:
diff changeset
64 typedef int (*Tj)[j];
kono
parents:
diff changeset
65 Ti (*qf)[2];
kono
parents:
diff changeset
66 Ti (*qv)[i];
kono
parents:
diff changeset
67 Ti (*qi)[];
kono
parents:
diff changeset
68 Tj (*rf)[2];
kono
parents:
diff changeset
69 Tj (*rv)[j];
kono
parents:
diff changeset
70 Tj (*ri)[];
kono
parents:
diff changeset
71 TEST_COMP_FIX(qf, qf);
kono
parents:
diff changeset
72 TEST_COMP_FIX(qf, qv);
kono
parents:
diff changeset
73 TEST_COMP_FIX(qf, qi);
kono
parents:
diff changeset
74 TEST_COMP_FIX(qf, rf);
kono
parents:
diff changeset
75 TEST_COMP_FIX(qf, rv);
kono
parents:
diff changeset
76 TEST_COMP_FIX(qf, ri);
kono
parents:
diff changeset
77 TEST_COMP_FIX(qv, qf);
kono
parents:
diff changeset
78 TEST_COMP_VLA(qv, qv);
kono
parents:
diff changeset
79 TEST_COMP_VLA(qv, qi);
kono
parents:
diff changeset
80 TEST_COMP_FIX(qv, rf);
kono
parents:
diff changeset
81 TEST_COMP_VLA(qv, rv);
kono
parents:
diff changeset
82 TEST_COMP_VLA(qv, ri);
kono
parents:
diff changeset
83 TEST_COMP_FIX(qi, qf);
kono
parents:
diff changeset
84 TEST_COMP_VLA(qi, qv);
kono
parents:
diff changeset
85 TEST_COMP_INC(qi, qi);
kono
parents:
diff changeset
86 TEST_COMP_FIX(qi, rf);
kono
parents:
diff changeset
87 TEST_COMP_VLA(qi, rv);
kono
parents:
diff changeset
88 TEST_COMP_INC(qi, ri);
kono
parents:
diff changeset
89 TEST_COMP_FIX(rf, qf);
kono
parents:
diff changeset
90 TEST_COMP_FIX(rf, qv);
kono
parents:
diff changeset
91 TEST_COMP_FIX(rf, qi);
kono
parents:
diff changeset
92 TEST_COMP_FIX(rf, rf);
kono
parents:
diff changeset
93 TEST_COMP_FIX(rf, rv);
kono
parents:
diff changeset
94 TEST_COMP_FIX(rf, ri);
kono
parents:
diff changeset
95 TEST_COMP_FIX(rv, qf);
kono
parents:
diff changeset
96 TEST_COMP_VLA(rv, qv);
kono
parents:
diff changeset
97 TEST_COMP_VLA(rv, qi);
kono
parents:
diff changeset
98 TEST_COMP_FIX(rv, rf);
kono
parents:
diff changeset
99 TEST_COMP_VLA(rv, rv);
kono
parents:
diff changeset
100 TEST_COMP_VLA(rv, ri);
kono
parents:
diff changeset
101 TEST_COMP_FIX(ri, qf);
kono
parents:
diff changeset
102 TEST_COMP_VLA(ri, qv);
kono
parents:
diff changeset
103 TEST_COMP_INC(ri, qi);
kono
parents:
diff changeset
104 TEST_COMP_FIX(ri, rf);
kono
parents:
diff changeset
105 TEST_COMP_VLA(ri, rv);
kono
parents:
diff changeset
106 TEST_COMP_INC(ri, ri);
kono
parents:
diff changeset
107 }