annotate gcc/testsuite/gdc.test/runnable_cxx/cppa.d @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 // PERMUTE_ARGS: -g
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 // EXTRA_CPP_SOURCES: cppb.cpp
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 import core.stdc.stdio;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 import core.stdc.stdarg;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 import core.stdc.config;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 extern (C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 int foob(int i, int j, int k);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 class C
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 extern (C++) int bar(int i, int j, int k)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 printf("this = %p\n", this);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 printf("i = %d\n", i);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 printf("j = %d\n", j);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 printf("k = %d\n", k);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 return 1;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 extern (C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 int foo(int i, int j, int k)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 printf("i = %d\n", i);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 printf("j = %d\n", j);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 printf("k = %d\n", k);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 assert(i == 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 assert(j == 2);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 assert(k == 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 return 1;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 void test1()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 foo(1, 2, 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 auto i = foob(1, 2, 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 assert(i == 7);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 C c = new C();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 c.bar(4, 5, 6);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 extern (C++) interface D
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51 int bar(int i, int j, int k);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 extern (C++) D getD();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 void test2()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 D d = getD();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 int i = d.bar(9,10,11);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60 assert(i == 8);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65 extern (C++) int callE(E);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67 extern (C++) interface E
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69 int bar(int i, int j, int k);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72 class F : E
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
74 extern (C++) int bar(int i, int j, int k)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
75 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
76 printf("F.bar: i = %d\n", i);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
77 printf("F.bar: j = %d\n", j);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
78 printf("F.bar: k = %d\n", k);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
79 assert(i == 11);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
80 assert(j == 12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
81 assert(k == 13);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
82 return 8;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
83 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
84 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
85
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
86 void test3()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
87 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
88 F f = new F();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
89 int i = callE(f);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
90 assert(i == 8);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
91 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
92
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
93 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
94
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
95 extern (C++) void foo4(char* p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
96
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
97 void test4()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
98 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
99 foo4(null);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
100 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
101
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
102 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
103
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
104 extern(C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
105 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
106 struct foo5 { int i; int j; void* p; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
107
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
108 interface bar5{
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
109 foo5 getFoo(int i);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
110 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
111
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
112 bar5 newBar();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
113 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
114
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
115 void test5()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
116 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
117 bar5 b = newBar();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
118 foo5 f = b.getFoo(4);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
119 printf("f.p = %p, b = %p\n", f.p, cast(void*)b);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
120 assert(f.p == cast(void*)b);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
121 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
122
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
123
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
124 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
125
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
126 extern(C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
127 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
128 struct S6
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
129 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
130 int i;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
131 double d;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
132 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
133
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
134 union S6_2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
135 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
136 int i;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
137 double d;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
138 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
139
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
140 enum S6_3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
141 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
142 A, B
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
143 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
144
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
145 S6 foo6();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
146 S6_2 foo6_2();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
147 S6_3 foo6_3();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
148 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
149
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
150 extern (C) int foosize6();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
151
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
152 void test6()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
153 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
154 S6 f = foo6();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
155 printf("%d %d\n", foosize6(), S6.sizeof);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
156 assert(foosize6() == S6.sizeof);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
157 version (X86)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
158 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
159 assert(f.i == 42);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
160 printf("f.d = %g\n", f.d);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
161 assert(f.d == 2.5);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
162 assert(foo6_2().i == 42);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
163 assert(foo6_3() == S6_3.A);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
164 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
165 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
166
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
167 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
168
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
169 extern (C) int foo7();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
170
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
171 struct S
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
172 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
173 int i;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
174 long l;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
175 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
176
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
177 void test7()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
178 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
179 printf("%d %d\n", foo7(), S.sizeof);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
180 assert(foo7() == S.sizeof);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
181 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
182
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
183 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
184
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
185 extern (C++) void foo8(const(char)*);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
186
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
187 void test8()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
188 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
189 char c;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
190 foo8(&c);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
191 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
192
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
193 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
194 // 4059
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
195
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
196 struct elem9 { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
197
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
198 extern(C++) void foobar9(elem9*, elem9*);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
199
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
200 void test9()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
201 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
202 elem9 *a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
203 foobar9(a, a);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
204 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
205
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
206 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
207
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
208
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
209 struct A11802;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
210 struct B11802;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
211
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
212 extern(C++) class C11802
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
213 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
214 int x;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
215 void fun(A11802*) { x += 2; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
216 void fun(B11802*) { x *= 2; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
217 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
218
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
219 extern(C++) class D11802 : C11802
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
220 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
221 override void fun(A11802*) { x += 3; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
222 override void fun(B11802*) { x *= 3; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
223 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
224
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
225 extern(C++) void test11802x(D11802);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
226
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
227 void test11802()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
228 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
229 auto x = new D11802();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
230 x.x = 0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
231 test11802x(x);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
232 assert(x.x == 9);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
233 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
234
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
235
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
236 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
237
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
238 struct S13956
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
239 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
240 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
241
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
242 extern(C++) void func13956(S13956 arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
243
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
244 extern(C++) void check13956(S13956 arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
245 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
246 assert(arg0 == S13956());
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
247 assert(arg1 == 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
248 assert(arg2 == 2);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
249 assert(arg3 == 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
250 assert(arg4 == 4);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
251 assert(arg5 == 5);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
252 version (OSX)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
253 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
254 version (D_LP64)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
255 assert(arg6 == 6);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
256 // fails on OSX 32-bit
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
257 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
258 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
259 assert(arg6 == 6);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
260 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
261
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
262 void test13956()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
263 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
264 func13956(S13956(), 1, 2, 3, 4, 5, 6);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
265 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
266
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
267 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
268 // 5148
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
269
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
270 extern (C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
271 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
272 void foo10(const(char)*, const(char)*);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
273 void foo10(const int, const int);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
274 void foo10(const char, const char);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
275 void foo10(bool, bool);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
276
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
277 struct MyStructType { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
278 void foo10(const MyStructType s, const MyStructType t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
279
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
280 enum MyEnumType { onemember }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
281 void foo10(const MyEnumType s, const MyEnumType t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
282 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
283
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
284 void test10()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
285 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
286 char* p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
287 foo10(p, p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
288 foo10(1,2);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
289 foo10('c','d');
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
290 MyStructType s;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
291 foo10(s,s);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
292 MyEnumType e;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
293 foo10(e,e);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
294 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
295
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
296 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
297
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
298 extern (C++, N11.M) { void bar11(); }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
299
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
300 extern (C++, A11.B) { extern (C++, C) { void bar(); }}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
301
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
302 void test11()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
303 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
304 bar11();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
305 A11.B.C.bar();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
306 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
307 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
308
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
309 struct Struct10071
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
310 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
311 void *p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
312 c_long_double r;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
313 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
314
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
315 extern(C++) size_t offset10071();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
316 void test10071()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
317 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
318 assert(offset10071() == Struct10071.r.offsetof);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
319 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
320
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
321 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
322
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
323 char[100] valistbuffer;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
324
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
325 extern(C++) void myvprintfx(const(char)* format, va_list va)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
326 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
327 vsprintf(valistbuffer.ptr, format, va);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
328 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
329 extern(C++) void myvprintf(const(char)*, va_list);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
330 extern(C++) void myprintf(const(char)* format, ...)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
331 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
332 va_list ap;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
333 va_start(ap, format);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
334 myvprintf(format, ap);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
335 va_end(ap);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
336 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
337
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
338 void testvalist()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
339 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
340 myprintf("hello %d", 999);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
341 assert(valistbuffer[0..9] == "hello 999");
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
342 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
343
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
344 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
345 // 12825
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
346
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
347 extern(C++) class C12825
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
348 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
349 uint a = 0x12345678;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
350 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
351
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
352 void test12825()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
353 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
354 auto c = new C12825();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
355 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
356
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
357 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
358
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
359 struct S13955a
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
360 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
361 float a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
362 double b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
363 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
364
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
365 struct S13955b
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
366 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
367 double a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
368 float b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
369 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
370
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
371 struct S13955c
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
372 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
373 float a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
374 float b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
375 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
376
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
377 struct S13955d
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
378 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
379 double a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
380 double b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
381 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
382
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
383 extern(C++) void check13955(S13955a a, S13955b b, S13955c c, S13955d d)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
384 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
385 assert(a.a == 2);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
386 assert(a.b == 4);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
387 assert(b.a == 8);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
388 assert(b.b == 16);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
389 assert(c.a == 32);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
390 assert(c.b == 64);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
391 assert(d.a == 128);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
392 assert(d.b == 256);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
393 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
394
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
395 extern(C++) void func13955(S13955a a, S13955b b, S13955c c, S13955d d);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
396
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
397 void test13955()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
398 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
399 func13955(S13955a(2, 4), S13955b(8, 16), S13955c(32, 64), S13955d(128, 256));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
400 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
401
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
402 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
403
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
404 extern(C++) class C13161
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
405 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
406 void dummyfunc();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
407 long val_5;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
408 uint val_9;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
409 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
410
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
411 extern(C++) class Test : C13161
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
412 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
413 uint val_0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
414 long val_1;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
415 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
416
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
417 extern(C++) size_t getoffset13161();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
418
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
419 extern(C++) class C13161a
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
420 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
421 void dummyfunc();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
422 c_long_double val_5;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
423 uint val_9;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
424 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
425
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
426 extern(C++) class Testa : C13161a
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
427 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
428 bool val_0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
429 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
430
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
431 extern(C++) size_t getoffset13161a();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
432
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
433 void test13161()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
434 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
435 assert(getoffset13161() == Test.val_0.offsetof);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
436 assert(getoffset13161a() == Testa.val_0.offsetof);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
437 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
438
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
439 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
440
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
441 version (linux)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
442 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
443 extern(C++, __gnu_cxx)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
444 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
445 struct new_allocator(T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
446 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
447 alias size_type = size_t;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
448 static if (is(T : char))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
449 void deallocate(T*, size_type) { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
450 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
451 void deallocate(T*, size_type);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
452 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
453 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
454 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
455
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
456 extern (C++, std)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
457 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
458 struct allocator(T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
459 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
460 version (linux)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
461 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
462 alias size_type = size_t;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
463 void deallocate(T* p, size_type sz)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
464 { (cast(__gnu_cxx.new_allocator!T*)&this).deallocate(p, sz); }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
465 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
466 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
467
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
468 version (linux)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
469 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
470 class vector(T, A = allocator!T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
471 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
472 final void push_back(ref const T);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
473 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
474
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
475 struct char_traits(T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
476 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
477 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
478
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
479 // https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
480 version (none)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
481 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
482 extern (C++, __cxx11)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
483 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
484 struct basic_string(T, C = char_traits!T, A = allocator!T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
485 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
486 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
487 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
488 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
489 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
490 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
491 struct basic_string(T, C = char_traits!T, A = allocator!T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
492 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
493 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
494 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
495
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
496 struct basic_istream(T, C = char_traits!T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
497 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
498 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
499
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
500 struct basic_ostream(T, C = char_traits!T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
501 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
502 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
503
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
504 struct basic_iostream(T, C = char_traits!T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
505 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
506 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
507 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
508
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
509 class exception { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
510
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
511 // 14956
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
512 extern(C++, N14956)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
513 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
514 struct S14956 { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
515 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
516 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
517
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
518 extern (C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
519 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
520 version (linux)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
521 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
522 void foo14(std.vector!(int) p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
523 void foo14a(std.basic_string!(char) *p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
524 void foo14b(std.basic_string!(int) *p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
525 void foo14c(std.basic_istream!(char) *p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
526 void foo14d(std.basic_ostream!(char) *p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
527 void foo14e(std.basic_iostream!(char) *p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
528
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
529 void foo14f(std.char_traits!char* x, std.basic_string!char* p, std.basic_string!char* q);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
530 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
531 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
532
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
533 void test14()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
534 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
535 version (linux)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
536 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
537 std.vector!int p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
538 foo14(p);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
539
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
540 foo14a(null);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
541 foo14b(null);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
542 foo14c(null);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
543 foo14d(null);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
544 foo14e(null);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
545 foo14f(null, null, null);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
546 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
547 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
548
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
549 version (linux)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
550 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
551 void test14a(std.allocator!int * pa)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
552 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
553 pa.deallocate(null, 0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
554 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
555
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
556 void gun(std.vector!int pa)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
557 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
558 int x = 42;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
559 pa.push_back(x);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
560 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
561 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
562
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
563 void test13289()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
564 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
565 assert(f13289_cpp_wchar_t('a') == 'A');
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
566 assert(f13289_cpp_wchar_t('B') == 'B');
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
567 assert(f13289_d_wchar('c') == 'C');
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
568 assert(f13289_d_wchar('D') == 'D');
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
569 assert(f13289_d_dchar('e') == 'E');
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
570 assert(f13289_d_dchar('F') == 'F');
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
571 assert(f13289_cpp_test());
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
572 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
573
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
574 extern(C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
575 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
576 bool f13289_cpp_test();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
577
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
578 version(Posix)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
579 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
580 dchar f13289_cpp_wchar_t(dchar);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
581 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
582 else version(Windows)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
583 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
584 wchar f13289_cpp_wchar_t(wchar);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
585 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
586
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
587 wchar f13289_d_wchar(wchar ch)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
588 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
589 if (ch <= 'z' && ch >= 'a')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
590 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
591 return cast(wchar)(ch - ('a' - 'A'));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
592 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
593 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
594 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
595 return ch;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
596 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
597 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
598 dchar f13289_d_dchar(dchar ch)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
599 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
600 if (ch <= 'z' && ch >= 'a')
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
601 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
602 return ch - ('a' - 'A');
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
603 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
604 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
605 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
606 return ch;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
607 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
608 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
609 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
610
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
611 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
612
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
613 version (CRuntime_Microsoft)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
614 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
615 enum __c_long_double : double;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
616 alias __c_long_double myld;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
617 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
618 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
619 alias c_long_double myld;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
620
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
621 extern (C++) myld testld(myld);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
622 extern (C++) myld testldld(myld, myld);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
623
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
624
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
625 void test15()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
626 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
627 myld ld = 5.0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
628 ld = testld(ld);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
629 assert(ld == 6.0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
630
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
631 myld ld2 = 5.0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
632 ld2 = testldld(ld2, ld2);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
633 assert(ld2 == 6.0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
634 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
635
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
636 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
637
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
638 version( Windows )
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
639 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
640 alias int x_long;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
641 alias uint x_ulong;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
642 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
643 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
644 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
645 static if( (void*).sizeof > int.sizeof )
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
646 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
647 alias long x_long;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
648 alias ulong x_ulong;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
649 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
650 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
651 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
652 alias int x_long;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
653 alias uint x_ulong;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
654 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
655 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
656
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
657 enum __c_long : x_long;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
658 enum __c_ulong : x_ulong;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
659 alias __c_long mylong;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
660 alias __c_ulong myulong;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
661
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
662 extern (C++) mylong testl(mylong);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
663 extern (C++) myulong testul(myulong);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
664
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
665
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
666 void test16()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
667 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
668 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
669 mylong ld = 5;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
670 ld = testl(ld);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
671 assert(ld == 5 + mylong.sizeof);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
672 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
673 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
674 myulong ld = 5;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
675 ld = testul(ld);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
676 assert(ld == 5 + myulong.sizeof);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
677 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
678
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
679 static if (__c_long.sizeof == long.sizeof)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
680 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
681 static assert(__c_long.max == long.max);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
682 static assert(__c_long.min == long.min);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
683 static assert(__c_long.init == long.init);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
684 static assert(__c_ulong.max == ulong.max);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
685 static assert(__c_ulong.min == ulong.min);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
686 static assert(__c_ulong.init == ulong.init);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
687 __c_long cl = 0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
688 cl = cl + 1;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
689 long l = cl;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
690 cl = l;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
691 __c_ulong cul = 0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
692 cul = cul + 1;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
693 ulong ul = cul;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
694 cul = ul;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
695 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
696 else static if (__c_long.sizeof == int.sizeof)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
697 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
698 static assert(__c_long.max == int.max);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
699 static assert(__c_long.min == int.min);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
700 static assert(__c_long.init == int.init);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
701 static assert(__c_ulong.max == uint.max);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
702 static assert(__c_ulong.min == uint.min);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
703 static assert(__c_ulong.init == uint.init);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
704 __c_long cl = 0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
705 cl = cl + 1;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
706 int i = cl;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
707 cl = i;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
708 __c_ulong cul = 0;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
709 cul = cul + 1;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
710 uint u = cul;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
711 cul = u;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
712 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
713 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
714 static assert(0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
715 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
716
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
717 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
718
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
719 struct S13707
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
720 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
721 void* a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
722 void* b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
723 this(void* a, void* b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
724 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
725 this.a = a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
726 this.b = b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
727 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
728 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
729
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
730 extern(C++) S13707 func13707();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
731
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
732 void test13707()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
733 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
734 auto p = func13707();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
735 assert(p.a == null);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
736 assert(p.b == null);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
737 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
738
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
739 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
740
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
741 struct S13932(int x)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
742 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
743 int member;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
744 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
745
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
746 extern(C++) void func13932(S13932!(-1) s);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
747
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
748 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
749
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
750 extern(C++, N13337.M13337)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
751 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
752 struct S13337{}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
753 void foo13337(S13337 s);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
754 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
755
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
756 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
757 // 14195
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
758
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
759 struct Delegate1(T) {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
760 struct Delegate2(T1, T2) {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
761
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
762 template Signature(T)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
763 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
764 alias Signature = typeof(*(T.init));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
765 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
766
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
767 extern(C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
768 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
769 alias del1_t = Delegate1!(Signature!(void function()));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
770 alias del2_t = Delegate2!(Signature!(int function(float, double)), Signature!(int function(float, double)));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
771 void test14195a(del1_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
772 void test14195b(del2_t);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
773 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
774
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
775 void test14195()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
776 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
777 test14195a(del1_t());
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
778 test14195b(del2_t());
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
779 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
780
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
781
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
782 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
783 // 14200
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
784
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
785 template Tuple14200(T...)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
786 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
787 alias Tuple14200 = T;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
788 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
789
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
790 extern(C++) void test14200a(Tuple14200!(int));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
791 extern(C++) void test14200b(float, Tuple14200!(int, double));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
792
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
793 void test14200()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
794 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
795 test14200a(1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
796 test14200b(1.0f, 1, 1.0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
797 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
798
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
799 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
800 // 14956
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
801
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
802 extern(C++) void test14956(S14956 s);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
803
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
804 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
805 // check order of overloads in vtable
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
806
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
807 extern (C++) class Statement {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
808 extern (C++) class ErrorStatement {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
809 extern (C++) class PeelStatement {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
810 extern (C++) class ExpStatement {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
811 extern (C++) class DtorExpStatement {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
812
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
813 extern (C++) class Visitor
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
814 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
815 public:
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
816 int visit(Statement) { return 1; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
817 int visit(ErrorStatement) { return 2; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
818 int visit(PeelStatement) { return 3; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
819 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
820
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
821 extern (C++) class Visitor2 : Visitor
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
822 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
823 int visit2(ExpStatement) { return 4; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
824 int visit2(DtorExpStatement) { return 5; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
825 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
826
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
827 extern(C++) bool testVtableCpp(Visitor2 sv);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
828 extern(C++) Visitor2 getVisitor2();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
829
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
830 bool testVtableD(Visitor2 sv)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
831 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
832 Statement s1;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
833 ErrorStatement s2;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
834 PeelStatement s3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
835 ExpStatement s4;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
836 DtorExpStatement s5;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
837
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
838 if (sv.visit(s1) != 1) return false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
839 if (sv.visit(s2) != 2) return false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
840 if (sv.visit(s3) != 3) return false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
841 if (sv.visit2(s4) != 4) return false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
842 if (sv.visit2(s5) != 5) return false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
843 return true;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
844 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
845
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
846 void testVtable()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
847 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
848 Visitor2 dinst = new Visitor2;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
849 if (!testVtableCpp(dinst))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
850 assert(0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
851
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
852 Visitor2 cppinst = getVisitor2();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
853 if (!testVtableD(cppinst))
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
854 assert(0);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
855 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
856
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
857 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
858 /* problems detected by fuzzer */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
859 extern(C++) void fuzz1_cppvararg(long arg10, long arg11, bool arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
860 extern(C++) void fuzz1_dvararg(long arg10, long arg11, bool arg12)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
861 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
862 fuzz1_checkValues(arg10, arg11, arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
863 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
864
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
865 extern(C++) void fuzz1_checkValues(long arg10, long arg11, bool arg12)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
866 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
867 assert(arg10 == 103);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
868 assert(arg11 == 104);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
869 assert(arg12 == false);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
870 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
871
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
872 void fuzz1()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
873 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
874 long arg10 = 103;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
875 long arg11 = 104;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
876 bool arg12 = false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
877 fuzz1_dvararg(arg10, arg11, arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
878 fuzz1_cppvararg(arg10, arg11, arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
879 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
880
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
881 ////////
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
882 extern(C++) void fuzz2_cppvararg(ulong arg10, ulong arg11, bool arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
883 extern(C++) void fuzz2_dvararg(ulong arg10, ulong arg11, bool arg12)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
884 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
885 fuzz2_checkValues(arg10, arg11, arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
886 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
887
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
888 extern(C++) void fuzz2_checkValues(ulong arg10, ulong arg11, bool arg12)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
889 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
890 assert(arg10 == 103);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
891 assert(arg11 == 104);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
892 assert(arg12 == false);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
893 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
894
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
895 void fuzz2()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
896 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
897 ulong arg10 = 103;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
898 ulong arg11 = 104;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
899 bool arg12 = false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
900 fuzz2_dvararg(arg10, arg11, arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
901 fuzz2_cppvararg(arg10, arg11, arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
902 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
903
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
904 ////////
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
905 extern(C++) void fuzz3_cppvararg(wchar arg10, wchar arg11, bool arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
906 extern(C++) void fuzz3_dvararg(wchar arg10, wchar arg11, bool arg12)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
907 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
908 fuzz2_checkValues(arg10, arg11, arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
909 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
910
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
911 extern(C++) void fuzz3_checkValues(wchar arg10, wchar arg11, bool arg12)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
912 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
913 assert(arg10 == 103);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
914 assert(arg11 == 104);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
915 assert(arg12 == false);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
916 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
917
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
918 void fuzz3()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
919 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
920 wchar arg10 = 103;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
921 wchar arg11 = 104;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
922 bool arg12 = false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
923 fuzz3_dvararg(arg10, arg11, arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
924 fuzz3_cppvararg(arg10, arg11, arg12);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
925 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
926
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
927 void fuzz()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
928 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
929 fuzz1();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
930 fuzz2();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
931 fuzz3();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
932 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
933
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
934 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
935
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
936 extern (C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
937 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
938 void throwit();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
939 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
940
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
941 void testeh()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
942 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
943 printf("testeh()\n");
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
944 version (linux)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
945 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
946 version (X86_64)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
947 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
948 bool caught;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
949 try
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
950 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
951 throwit();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
952 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
953 catch (std.exception e)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
954 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
955 caught = true;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
956 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
957 assert(caught);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
958 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
959 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
960 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
961
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
962 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
963
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
964 version (linux)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
965 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
966 version (X86_64)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
967 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
968 bool raii_works = false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
969 struct RAIITest
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
970 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
971 ~this()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
972 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
973 raii_works = true;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
974 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
975 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
976
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
977 void dFunction()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
978 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
979 RAIITest rt;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
980 throwit();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
981 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
982
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
983 void testeh2()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
984 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
985 printf("testeh2()\n");
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
986 try
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
987 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
988 dFunction();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
989 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
990 catch(std.exception e)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
991 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
992 assert(raii_works);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
993 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
994 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
995 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
996 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
997 void testeh2() { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
998 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
999 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1000 void testeh2() { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1001
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1002 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1003
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1004 extern (C++) { void throwle(); void throwpe(); }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1005
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1006 void testeh3()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1007 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1008 printf("testeh3()\n");
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1009 version (linux)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1010 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1011 version (X86_64)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1012 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1013 bool caught = false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1014 try
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1015 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1016 throwle();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1017 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1018 catch (std.exception e) //polymorphism test.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1019 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1020 caught = true;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1021 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1022 assert(caught);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1023 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1024 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1025 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1026
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1027 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1028 // 15576
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1029
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1030 extern (C++, ns15576)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1031 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1032 extern __gshared int global15576;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1033
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1034 extern (C++, ns)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1035 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1036 extern __gshared int n_global15576;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1037 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1038 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1039
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1040 void test15576()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1041 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1042 global15576 = n_global15576 = 123;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1043 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1044
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1045 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1046 // 15579
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1047
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1048 extern (C++)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1049 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1050 class Base
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1051 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1052 //~this() {}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1053 void based() { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1054 ubyte x = 4;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1055 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1056
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1057 interface Interface
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1058 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1059 int MethodCPP();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1060 int MethodD();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1061 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1062
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1063 class Derived : Base, Interface
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1064 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1065 short y = 5;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1066 int MethodCPP();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1067 int MethodD() {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1068 printf("Derived.MethodD(): this = %p, x = %d, y = %d\n", this, x, y);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1069 Derived p = this;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1070 //p = cast(Derived)(cast(void*)p - 16);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1071 assert(p.x == 4 || p.x == 7);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1072 assert(p.y == 5 || p.y == 8);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1073 return 3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1074 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1075 int Method() { return 6; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1076 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1077
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1078 Derived cppfoo(Derived);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1079 Interface cppfooi(Interface);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1080 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1081
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1082 void test15579()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1083 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1084 Derived d = new Derived();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1085 printf("d = %p\n", d);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1086 assert(d.x == 4);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1087 assert(d.y == 5);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1088 assert((cast(Interface)d).MethodCPP() == 30);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1089 assert((cast(Interface)d).MethodD() == 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1090 assert(d.MethodCPP() == 30);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1091 assert(d.MethodD() == 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1092 assert(d.Method() == 6);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1093
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1094 d = cppfoo(d);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1095 assert(d.x == 7);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1096 assert(d.y == 8);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1097
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1098 printf("d2 = %p\n", d);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1099
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1100 /* Casting to an interface involves thunks in the vtbl[].
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1101 * g++ puts the thunks for MethodD in the same COMDAT as MethodD.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1102 * But D doesn't, so when the linker "picks one" of the D generated MethodD
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1103 * or the g++ generated MethodD, it may wind up with a messed up thunk,
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1104 * resulting in a seg fault. The solution is to not expect objects of the same
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1105 * type to be constructed on both sides of the D/C++ divide if the same member
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1106 * function (in this case, MethodD) is also defined on both sides.
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1107 */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1108 version (Windows)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1109 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1110 assert((cast(Interface)d).MethodD() == 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1111 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1112 assert((cast(Interface)d).MethodCPP() == 30);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1113
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1114 assert(d.Method() == 6);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1115
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1116 printf("d = %p, i = %p\n", d, cast(Interface)d);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1117 version (Windows)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1118 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1119 Interface i = cppfooi(d);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1120 printf("i2: %p\n", i);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1121 assert(i.MethodD() == 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1122 assert(i.MethodCPP() == 30);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1123 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1124 printf("test15579() done\n");
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1125 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1126
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1127 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1128 // 15610
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1129
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1130 extern(C++) class Base2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1131 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1132 int i;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1133 void baser() { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1134 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1135
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1136 extern(C++) interface Interface2 { abstract void f(); }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1137
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1138 extern(C++) class Derived2 : Base2, Interface2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1139 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1140 final
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1141 override void f();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1142 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1143
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1144
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1145 void test15610()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1146 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1147 auto c = new Derived2();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1148 printf("test15610(): c = %p\n", c);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1149 c.i = 3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1150 c.f();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1151 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1153 /******************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1154 // 15455
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1155
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1156 struct X6
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1157 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1158 ushort a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1159 ushort b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1160 ubyte c;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1161 ubyte d;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1162 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1163
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1164 static assert(X6.sizeof == 6);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1165
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1166 struct X8
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1167 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1168 ushort a;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1169 X6 b;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1170 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1171
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1172 static assert(X8.sizeof == 8);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1173
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1174 void test15455a(X8 s)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1175 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1176 assert(s.a == 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1177 assert(s.b.a == 2);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1178 assert(s.b.b == 3);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1179 assert(s.b.c == 4);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1180 assert(s.b.d == 5);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1181 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1182
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1183 extern (C++) void test15455b(X8 s);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1184
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1185 void test15455()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1186 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1187 X8 s;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1188
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1189 s.a = 1;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1190 s.b.a = 2;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1191 s.b.b = 3;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1192 s.b.c = 4;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1193 s.b.d = 5;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1194 test15455a(s);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1195 test15455b(s);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1196 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1197
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1198 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1199 // 15372
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1200
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1201 extern(C++) int foo15372(T)(T v);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1202
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1203 void test15372()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1204 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1205 version(Windows){}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1206 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1207 assert(foo15372!int(1) == 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1208 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1209
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1210 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1211 // 15802
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1212
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1213 extern(C++) {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1214 template Foo15802(T) {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1215 static int boo(T v);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1216 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1217 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1218
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1219 void test15802()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1220 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1221 version(Windows){}
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1222 else
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1223 assert(Foo15802!(int).boo(1) == 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1224 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1225
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1226 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1227 // 16536 - mangling mismatch on OSX
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1228
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1229 version(OSX) extern(C++) ulong pass16536(ulong);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1230
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1231 void test16536()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1232 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1233 version(OSX) assert(pass16536(123) == 123);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1234 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1235
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1236 /****************************************/
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1237
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1238 void main()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1239 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1240 test1();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1241 test2();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1242 test3();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1243 test4();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1244 test13956();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1245 test5();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1246 test6();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1247 test10071();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1248 test7();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1249 test8();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1250 test11802();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1251 test9();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1252 test10();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1253 test13955();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1254 test11();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1255 testvalist();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1256 test12825();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1257 test13161();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1258 test14();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1259 test13289();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1260 test15();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1261 test16();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1262 func13707();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1263 func13932(S13932!(-1)(0));
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1264 foo13337(S13337());
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1265 test14195();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1266 test14200();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1267 test14956(S14956());
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1268 testVtable();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1269 fuzz();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1270 testeh();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1271 testeh2();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1272 testeh3();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1273 test15576();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1274 test15579();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1275 test15610();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1276 test15455();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1277 test15372();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1278 test15802();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1279 test16536();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1280
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1281 printf("Success\n");
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1282 }