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