blob: 0fb43e7dd9074c8b0d2cb8b0c0420304cd83abdb [file] [log] [blame]
Mike Stump49520942009-08-11 04:03:59 +00001// RUN: clang-cc -triple x86_64-apple-darwin -std=c++0x -O0 -S %s -o %t-64.s &&
Mike Stump06758d02009-08-04 20:37:29 +00002// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s &&
Mike Stump49520942009-08-11 04:03:59 +00003// RUN: clang-cc -triple i386-apple-darwin -std=c++0x -O0 -S %s -o %t-32.s &&
Mike Stump06758d02009-08-04 20:37:29 +00004// RUN: FileCheck -check-prefix LP32 -input-file=%t-32.s %s &&
Mike Stump49520942009-08-11 04:03:59 +00005
6// RUN: clang-cc -triple x86_64-apple-darwin -std=c++0x -O3 -S %s -o %t-O3-64.s &&
7// RUN: FileCheck -check-prefix LPOPT64 --input-file=%t-O3-64.s %s &&
8// RUN: clang-cc -triple i386-apple-darwin -std=c++0x -O3 -S %s -o %t-O3-32.s &&
9// RUN: FileCheck -check-prefix LPOPT32 -input-file=%t-O3-32.s %s &&
Chris Lattner7af5d192009-11-04 16:37:13 +000010// XFAIL: *
Mike Stump49520942009-08-11 04:03:59 +000011
Mike Stump06758d02009-08-04 20:37:29 +000012// RUN: true
Mike Stump3dee6ef2009-07-30 00:22:38 +000013
Mike Stump104ffaa2009-08-04 21:58:42 +000014struct B {
15 virtual void bar1();
16 virtual void bar2();
Mike Stump2effeca2009-08-06 00:38:46 +000017 int b;
Mike Stump104ffaa2009-08-04 21:58:42 +000018};
Mike Stump6f376332009-08-05 22:37:18 +000019void B::bar1() { }
20void B::bar2() { }
21
22struct C {
23 virtual void bee1();
24 virtual void bee2();
25};
26void C::bee1() { }
27void C::bee2() { }
Mike Stump104ffaa2009-08-04 21:58:42 +000028
Mike Stump2effeca2009-08-06 00:38:46 +000029struct D {
30 virtual void boo();
31};
32void D::boo() { }
Mike Stump104ffaa2009-08-04 21:58:42 +000033
Mike Stumpc5708d92009-08-06 14:12:47 +000034struct D1 {
35 virtual void bar();
Mike Stump02cf1e22009-08-06 23:48:32 +000036 virtual void bar2();
37 virtual void bar3();
38 virtual void bar4();
39 virtual void bar5();
Mike Stumpc5708d92009-08-06 14:12:47 +000040 void *d1;
41};
42void D1::bar() { }
43
44class F : virtual public D1, virtual public D {
45public:
46 virtual void foo();
47 void *f;
48};
49void F::foo() { }
50
51int j;
52void test2() {
53 F f;
54 static int sz = (char *)(&f.f) - (char *)(&f);
55 j = sz;
Mike Stump37148f42009-08-06 14:16:19 +000056 // FIXME: These should result in a frontend constant a la fold, no run time
57 // initializer
Mike Stump49520942009-08-11 04:03:59 +000058 // CHECK-LPOPT32: movl $4, __ZZ5test2vE2sz
59 // CHECK-LPOPT64: movl $8, __ZZ5test2vE2sz(%rip)
Mike Stumpc5708d92009-08-06 14:12:47 +000060}
Mike Stump8a12b562009-08-06 15:50:11 +000061
Mike Stumpc5708d92009-08-06 14:12:47 +000062static_assert(sizeof(F) == sizeof(void*)*4, "invalid vbase size");
63
Mike Stump2effeca2009-08-06 00:38:46 +000064struct E {
65 int e;
66};
67
68static_assert (sizeof (C) == (sizeof(void *)), "vtable pointer layout");
69
Mike Stumpeb19fa92009-08-06 13:41:24 +000070class A : public E, public B, public C {
Mike Stump3dee6ef2009-07-30 00:22:38 +000071public:
Mike Stump06758d02009-08-04 20:37:29 +000072 virtual void foo1();
73 virtual void foo2();
74 A() { }
Mike Stump2effeca2009-08-06 00:38:46 +000075 int a;
76} *ap;
Mike Stump6f376332009-08-05 22:37:18 +000077void A::foo1() { }
78void A::foo2() { }
Mike Stump3dee6ef2009-07-30 00:22:38 +000079
Mike Stump06758d02009-08-04 20:37:29 +000080int main() {
81 A a;
Mike Stump26899b02009-08-05 22:48:36 +000082 B b;
Mike Stump2effeca2009-08-06 00:38:46 +000083 ap->e = 1;
84 ap->b = 2;
Mike Stump06758d02009-08-04 20:37:29 +000085}
86
Mike Stump2effeca2009-08-06 00:38:46 +000087// CHECK-LP32: main:
88// CHECK-LP32: movl $1, 8(%eax)
89// CHECK-LP32: movl $2, 4(%eax)
90
91// CHECK-LP64: main:
92// CHECK-LP64: movl $1, 12(%rax)
93// CHECK-LP64: movl $2, 8(%rax)
94
Mike Stumpc902d222009-11-03 16:59:27 +000095// FIXME: This is the wrong thunk, but until these issues are fixed, better
96// than nothing.
Mike Stumpd0fe5362009-11-04 00:53:51 +000097// CHECK-LP64: __ZTcvn16_n72_v16_n32_N8test16_D4foo1Ev:
98// CHECK-LP64-NEXT:Leh_func_begin43:
Mike Stumpc902d222009-11-03 16:59:27 +000099// CHECK-LP64-NEXT: subq $24, %rsp
Mike Stumpd0fe5362009-11-04 00:53:51 +0000100// CHECK-LP64-NEXT:Llabel43:
Mike Stumpc902d222009-11-03 16:59:27 +0000101// CHECK-LP64-NEXT: movq %rdi, %rax
102// CHECK-LP64-NEXT: movq %rax, 8(%rsp)
103// CHECK-LP64-NEXT: movq 8(%rsp), %rax
104// CHECK-LP64-NEXT: movq %rax, %rcx
105// CHECK-LP64-NEXT: movabsq $-16, %rdx
106// CHECK-LP64-NEXT: addq %rdx, %rcx
107// CHECK-LP64-NEXT: movq -16(%rax), %rax
108// CHECK-LP64-NEXT: movq -72(%rax), %rax
109// CHECK-LP64-NEXT: addq %rax, %rcx
110// CHECK-LP64-NEXT: movq %rcx, %rax
111// CHECK-LP64-NEXT: movq %rax, %rdi
Mike Stumpd0fe5362009-11-04 00:53:51 +0000112// CHECK-LP64-NEXT: call __ZTch0_v16_n32_N8test16_D4foo1Ev
113// CHECK-LP64-NEXT: movq %rax, 16(%rsp)
114// CHECK-LP64-NEXT: movq 16(%rsp), %rax
115// CHECK-LP64-NEXT: addq $24, %rsp
116// CHECK-LP64-NEXT: ret
117
118// CHECK-LP64: __ZTch0_v16_n32_N8test16_D4foo1Ev:
119// CHECK-LP64-NEXT:Leh_func_begin44:
120// CHECK-LP64-NEXT: subq $24, %rsp
121// CHECK-LP64-NEXT:Llabel44:
122// CHECK-LP64-NEXT: movq %rdi, %rax
123// CHECK-LP64-NEXT: movq %rax, 8(%rsp)
124// CHECK-LP64-NEXT: movq 8(%rsp), %rax
125// CHECK-LP64-NEXT: movq %rax, %rdi
Mike Stumpc902d222009-11-03 16:59:27 +0000126// CHECK-LP64-NEXT: call __ZN8test16_D4foo1Ev
127// CHECK-LP64-NEXT: movq %rax, %rcx
128// CHECK-LP64-NEXT: movabsq $16, %rdx
129// CHECK-LP64-NEXT: addq %rdx, %rcx
130// CHECK-LP64-NEXT: movq 16(%rax), %rax
131// CHECK-LP64-NEXT: movq -32(%rax), %rax
132// CHECK-LP64-NEXT: addq %rax, %rcx
133// CHECK-LP64-NEXT: movq %rcx, %rax
134// CHECK-LP64-NEXT: movq %rax, 16(%rsp)
135// CHECK-LP64-NEXT: movq 16(%rsp), %rax
136// CHECK-LP64-NEXT: addq $24, %rsp
137// CHECK-LP64-NEXT: ret
138
Mike Stumpf0070db2009-08-26 20:46:33 +0000139struct test12_A {
140 virtual void foo0() { }
141 virtual void foo();
142} *test12_pa;
143
144struct test12_B : public test12_A {
145 virtual void foo() { }
146} *test12_pb;
147
148struct test12_D : public test12_B {
149} *test12_pd;
150void test12_foo() {
151 test12_pa->foo0();
152 test12_pb->foo0();
153 test12_pd->foo0();
154 test12_pa->foo();
155 test12_pb->foo();
156 test12_pd->foo();
157 test12_pa->test12_A::foo();
158}
159
160// CHECK-LPOPT32:__Z10test12_foov:
161// CHECK-LPOPT32: movl _test12_pa, %eax
162// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
163// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
164// CHECK-LPOPT32-NEXT: call *(%ecx)
165// CHECK-LPOPT32-NEXT: movl _test12_pb, %eax
166// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
167// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
168// CHECK-LPOPT32-NEXT: call *(%ecx)
169// CHECK-LPOPT32-NEXT: movl _test12_pd, %eax
170// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
171// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
172// CHECK-LPOPT32-NEXT: call *(%ecx)
173// CHECK-LPOPT32-NEXT: movl _test12_pa, %eax
174// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
175// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
176// CHECK-LPOPT32-NEXT: call *4(%ecx)
177// CHECK-LPOPT32-NEXT: movl _test12_pb, %eax
178// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
179// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
180// CHECK-LPOPT32-NEXT: call *4(%ecx)
181// CHECK-LPOPT32-NEXT: movl _test12_pd, %eax
182// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
183// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
184// CHECK-LPOPT32-NEXT: call *4(%ecx)
Mike Stump63bb7c22009-08-26 23:38:08 +0000185// CHECK-LPOPT32-NEXT: movl _test12_pa, %eax
186// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
187// CHECK-LPOPT32-NEXT: call L__ZN8test12_A3fooEv$stub
Mike Stumpf0070db2009-08-26 20:46:33 +0000188
189// CHECK-LPOPT64:__Z10test12_foov:
190// CHECK-LPOPT64: movq _test12_pa(%rip), %rdi
191// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
192// CHECK-LPOPT64-NEXT: call *(%rax)
193// CHECK-LPOPT64-NEXT: movq _test12_pb(%rip), %rdi
194// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
195// CHECK-LPOPT64-NEXT: call *(%rax)
196// CHECK-LPOPT64-NEXT: movq _test12_pd(%rip), %rdi
197// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
198// CHECK-LPOPT64-NEXT: call *(%rax)
199// CHECK-LPOPT64-NEXT: movq _test12_pa(%rip), %rdi
200// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
201// CHECK-LPOPT64-NEXT: call *8(%rax)
202// CHECK-LPOPT64-NEXT: movq _test12_pb(%rip), %rdi
203// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
204// CHECK-LPOPT64-NEXT: call *8(%rax)
205// CHECK-LPOPT64-NEXT: movq _test12_pd(%rip), %rdi
206// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
207// CHECK-LPOPT64-NEXT: call *8(%rax)
Mike Stump63bb7c22009-08-26 23:38:08 +0000208// CHECK-LPOPT64-NEXT: movq _test12_pa(%rip), %rdi
209// CHECK-LPOPT64-NEXT: call __ZN8test12_A3fooEv
Mike Stump49520942009-08-11 04:03:59 +0000210
Mike Stump94d0bce2009-08-13 00:34:14 +0000211struct test6_B2 { virtual void funcB2(); char b[1000]; };
212struct test6_B1 : virtual test6_B2 { virtual void funcB1(); };
213
214struct test6_D : test6_B2, virtual test6_B1 {
215};
216
Mike Stump16334272009-08-21 15:22:41 +0000217// CHECK-LP32: .zerofill __DATA, __common, _d6, 2012, 4
Mike Stump94d0bce2009-08-13 00:34:14 +0000218// CHECK-LP64: .zerofill __DATA, __common, _d6, 2024, 4
219
Mike Stump78846782009-08-13 23:33:29 +0000220struct test7_B2 { virtual void funcB2(); };
221struct test7_B1 : virtual test7_B2 { virtual void funcB1(); };
222
223struct test7_D : test7_B2, virtual test7_B1 {
224};
225
Mike Stump16334272009-08-21 15:22:41 +0000226// CHECK-LP32: .zerofill __DATA, __common, _d7, 8, 3
Mike Stump78846782009-08-13 23:33:29 +0000227// CHECK-LP64: .zerofill __DATA, __common, _d7, 16, 3
Mike Stump94d0bce2009-08-13 00:34:14 +0000228
229
Mike Stump49520942009-08-11 04:03:59 +0000230struct test3_B3 { virtual void funcB3(); };
231struct test3_B2 : virtual test3_B3 { virtual void funcB2(); };
232struct test3_B1 : virtual test3_B2 { virtual void funcB1(); };
233
Mike Stumpf0070db2009-08-26 20:46:33 +0000234struct test3_D : virtual test3_B1 {
Mike Stump49520942009-08-11 04:03:59 +0000235 virtual void funcD() { }
236};
237
238// CHECK-LP32:__ZTV7test3_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000239// CHECK-LP32-NEXT: .space 4
240// CHECK-LP32-NEXT: .space 4
241// CHECK-LP32-NEXT: .space 4
242// CHECK-LP32-NEXT: .space 4
243// CHECK-LP32-NEXT: .space 4
244// CHECK-LP32-NEXT: .space 4
245// CHECK-LP32-NEXT: .space 4
Mike Stump666a91e2009-08-21 18:05:02 +0000246// CHECK-LP32-NEXT: .long __ZTI7test3_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000247// CHECK-LP32-NEXT: .long __ZN8test3_B36funcB3Ev
248// CHECK-LP32-NEXT: .long __ZN8test3_B26funcB2Ev
249// CHECK-LP32-NEXT: .long __ZN8test3_B16funcB1Ev
250// CHECK-LP32-NEXT: .long __ZN7test3_D5funcDEv
Mike Stump49520942009-08-11 04:03:59 +0000251
252// CHECK-LP64:__ZTV7test3_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000253// CHECK-LP64-NEXT: .space 8
254// CHECK-LP64-NEXT: .space 8
255// CHECK-LP64-NEXT: .space 8
256// CHECK-LP64-NEXT: .space 8
257// CHECK-LP64-NEXT: .space 8
258// CHECK-LP64-NEXT: .space 8
259// CHECK-LP64-NEXT: .space 8
Mike Stump666a91e2009-08-21 18:05:02 +0000260// CHECK-LP64-NEXT: .quad __ZTI7test3_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000261// CHECK-LP64-NEXT: .quad __ZN8test3_B36funcB3Ev
262// CHECK-LP64-NEXT: .quad __ZN8test3_B26funcB2Ev
263// CHECK-LP64-NEXT: .quad __ZN8test3_B16funcB1Ev
264// CHECK-LP64-NEXT: .quad __ZN7test3_D5funcDEv
Mike Stump49520942009-08-11 04:03:59 +0000265
Mike Stump34fae9c2009-08-12 18:50:26 +0000266struct test4_D : virtual B, virtual C {
267};
268
269// CHECK-LP32:__ZTV7test4_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000270// CHECK-LP32-NEXT: .space 4
271// CHECK-LP32-NEXT: .long 4
272// CHECK-LP32-NEXT: .space 4
273// CHECK-LP32-NEXT: .space 4
274// CHECK-LP32-NEXT: .space 4
275// CHECK-LP32-NEXT: .long __ZTI7test4_D
276// CHECK-LP32-NEXT: .long __ZN1C4bee1Ev
277// CHECK-LP32-NEXT: .long __ZN1C4bee2Ev
278// CHECK-LP32-NEXT: .space 4
279// CHECK-LP32-NEXT: .space 4
280// CHECK-LP32-NEXT: .long 4294967292
281// CHECK-LP32-NEXT: .long __ZTI7test4_D
282// CHECK-LP32-NEXT: .long __ZN1B4bar1Ev
283// CHECK-LP32-NEXT: .long __ZN1B4bar2Ev
Mike Stump34fae9c2009-08-12 18:50:26 +0000284
285// CHECK-LP64:__ZTV7test4_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000286// CHECK-LP64-NEXT: .space 8
287// CHECK-LP64-NEXT: .quad 8
288// CHECK-LP64-NEXT: .space 8
289// CHECK-LP64-NEXT: .space 8
290// CHECK-LP64-NEXT: .space 8
291// CHECK-LP64-NEXT: .quad __ZTI7test4_D
292// CHECK-LP64-NEXT: .quad __ZN1C4bee1Ev
293// CHECK-LP64-NEXT: .quad __ZN1C4bee2Ev
294// CHECK-LP64-NEXT: .space 8
295// CHECK-LP64-NEXT: .space 8
296// CHECK-LP64-NEXT: .quad 18446744073709551608
297// CHECK-LP64-NEXT: .quad __ZTI7test4_D
298// CHECK-LP64-NEXT: .quad __ZN1B4bar1Ev
299// CHECK-LP64-NEXT: .quad __ZN1B4bar2Ev
Mike Stump34fae9c2009-08-12 18:50:26 +0000300
Mike Stump49520942009-08-11 04:03:59 +0000301
Mike Stumpd76264e2009-08-12 21:50:08 +0000302struct test5_B3 { virtual void funcB3(); };
303struct test5_B2 : virtual test5_B3 { virtual void funcB2(); };
304struct test5_B1 : virtual test5_B2 { virtual void funcB1(); };
305
306struct test5_B23 { virtual void funcB23(); };
307struct test5_B22 : virtual test5_B23 { virtual void funcB22(); };
308struct test5_B21 : virtual test5_B22 { virtual void funcB21(); };
309
310
311struct B232 { virtual void funcB232(); };
312struct B231 { virtual void funcB231(); };
313
314struct test5_B33 { virtual void funcB33(); };
315struct test5_B32 : virtual test5_B33, virtual B232 { virtual void funcB32(); };
316struct test5_B31 : virtual test5_B32, virtual B231 { virtual void funcB31(); };
317
318struct test5_D : virtual test5_B1, virtual test5_B21, virtual test5_B31 {
319 virtual void funcD() { }
320};
321
322// CHECK-LP32:__ZTV7test5_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000323// CHECK-LP32-NEXT: .long 16
324// CHECK-LP32-NEXT: .long 12
Mike Stumpfe3010d2009-08-16 19:04:13 +0000325// CHECK-LP32-NEXT: .long 8
326// CHECK-LP32-NEXT: .long 8
327// CHECK-LP32-NEXT: .long 8
328// CHECK-LP32-NEXT: .long 4
329// CHECK-LP32-NEXT: .long 4
330// CHECK-LP32-NEXT: .long 4
331// CHECK-LP32-NEXT: .space 4
Mike Stump4ec04c42009-08-16 02:40:14 +0000332// CHECK-LP32-NEXT: .space 4
333// CHECK-LP32-NEXT: .space 4
334// CHECK-LP32-NEXT: .space 4
335// CHECK-LP32-NEXT: .space 4
336// CHECK-LP32-NEXT: .space 4
337// CHECK-LP32-NEXT: .space 4
Mike Stumpb9837442009-08-20 07:22:17 +0000338// CHECK-LP32-NEXT: .long __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000339// CHECK-LP32-NEXT: .long __ZN8test5_B36funcB3Ev
340// CHECK-LP32-NEXT: .long __ZN8test5_B26funcB2Ev
341// CHECK-LP32-NEXT: .long __ZN8test5_B16funcB1Ev
342// CHECK-LP32-NEXT: .long __ZN7test5_D5funcDEv
Mike Stump4ec04c42009-08-16 02:40:14 +0000343// CHECK-LP32-NEXT: .space 4
344// CHECK-LP32-NEXT: .space 4
345// CHECK-LP32-NEXT: .space 4
346// CHECK-LP32-NEXT: .space 4
Mike Stump15a24e02009-08-28 23:22:54 +0000347// CHECK-LP32-NEXT: .space 4
Mike Stumpbf3fe202009-08-27 01:09:45 +0000348// CHECK-LP32-NEXT: .long 4294967292
Mike Stumpfe3010d2009-08-16 19:04:13 +0000349// CHECK-LP32-NEXT: .long __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000350// CHECK-LP32-NEXT: .long __ZN9test5_B237funcB23Ev
351// CHECK-LP32-NEXT: .long __ZN9test5_B227funcB22Ev
352// CHECK-LP32-NEXT: .long __ZN9test5_B217funcB21Ev
Mike Stump74be00b2009-09-01 22:01:25 +0000353// CHECK-LP32-NEXT: .space 4
Mike Stump6a9612f2009-10-31 20:06:59 +0000354// CHECK-LP32-NEXT: .long 8
355// CHECK-LP32-NEXT: .space 4
356// CHECK-LP32-NEXT: .space 4
357// CHECK-LP32-NEXT: .long 4
Mike Stump4ec04c42009-08-16 02:40:14 +0000358// CHECK-LP32-NEXT: .space 4
359// CHECK-LP32-NEXT: .space 4
Mike Stump9c88d982009-08-19 13:36:31 +0000360// CHECK-LP32-NEXT: .long 4294967288
Mike Stumpfe3010d2009-08-16 19:04:13 +0000361// CHECK-LP32-NEXT: .long __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000362// CHECK-LP32-NEXT: .long __ZN9test5_B337funcB33Ev
363// CHECK-LP32-NEXT: .long __ZN9test5_B327funcB32Ev
364// CHECK-LP32-NEXT: .long __ZN9test5_B317funcB31Ev
365// CHECK-LP32-NEXT: .space 4
366// CHECK-LP32-NEXT: .long 4294967284
367// CHECK-LP32-NEXT: .long __ZTI7test5_D
368// CHECK-LP32-NEXT: .long __ZN4B2328funcB232Ev
369// CHECK-LP32-NEXT: .space 4
Mike Stumpb9837442009-08-20 07:22:17 +0000370// CHECK-LP32-NEXT: .long 4294967280
Mike Stump4ec04c42009-08-16 02:40:14 +0000371// CHECK-LP32-NEXT: .long __ZTI7test5_D
372// CHECK-LP32-NEXT: .long __ZN4B2318funcB231Ev
Mike Stumpd76264e2009-08-12 21:50:08 +0000373
374// CHECK-LP64:__ZTV7test5_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000375// CHECK-LP64-NEXT: .quad 32
376// CHECK-LP64-NEXT: .quad 24
Mike Stumpfe3010d2009-08-16 19:04:13 +0000377// CHECK-LP64-NEXT: .quad 16
378// CHECK-LP64-NEXT: .quad 16
379// CHECK-LP64-NEXT: .quad 16
380// CHECK-LP64-NEXT: .quad 8
381// CHECK-LP64-NEXT: .quad 8
382// CHECK-LP64-NEXT: .quad 8
383// CHECK-LP64-NEXT: .space 8
Mike Stump4ec04c42009-08-16 02:40:14 +0000384// CHECK-LP64-NEXT: .space 8
385// CHECK-LP64-NEXT: .space 8
386// CHECK-LP64-NEXT: .space 8
387// CHECK-LP64-NEXT: .space 8
388// CHECK-LP64-NEXT: .space 8
389// CHECK-LP64-NEXT: .space 8
Mike Stumpb9837442009-08-20 07:22:17 +0000390// CHECK-LP64-NEXT: .quad __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000391// CHECK-LP64-NEXT: .quad __ZN8test5_B36funcB3Ev
392// CHECK-LP64-NEXT: .quad __ZN8test5_B26funcB2Ev
393// CHECK-LP64-NEXT: .quad __ZN8test5_B16funcB1Ev
394// CHECK-LP64-NEXT: .quad __ZN7test5_D5funcDEv
Mike Stump4ec04c42009-08-16 02:40:14 +0000395// CHECK-LP64-NEXT: .space 8
396// CHECK-LP64-NEXT: .space 8
397// CHECK-LP64-NEXT: .space 8
398// CHECK-LP64-NEXT: .space 8
Mike Stump15a24e02009-08-28 23:22:54 +0000399// CHECK-LP64-NEXT: .space 8
Mike Stumpbf3fe202009-08-27 01:09:45 +0000400// CHECK-LP64-NEXT: .quad 18446744073709551608
Mike Stumpfe3010d2009-08-16 19:04:13 +0000401// CHECK-LP64-NEXT: .quad __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000402// CHECK-LP64-NEXT: .quad __ZN9test5_B237funcB23Ev
403// CHECK-LP64-NEXT: .quad __ZN9test5_B227funcB22Ev
404// CHECK-LP64-NEXT: .quad __ZN9test5_B217funcB21Ev
Mike Stump74be00b2009-09-01 22:01:25 +0000405// CHECK-LP64-NEXT: .space 8
Mike Stump6a9612f2009-10-31 20:06:59 +0000406// CHECK-LP64-NEXT: .quad 16
407// CHECK-LP64-NEXT: .space 8
408// CHECK-LP64-NEXT: .space 8
409// CHECK-LP64-NEXT: .quad 8
Mike Stump4ec04c42009-08-16 02:40:14 +0000410// CHECK-LP64-NEXT: .space 8
411// CHECK-LP64-NEXT: .space 8
Mike Stump74be00b2009-09-01 22:01:25 +0000412// CHECK-LP64-NEXT: .quad 18446744073709551600
Mike Stumpfe3010d2009-08-16 19:04:13 +0000413// CHECK-LP64-NEXT: .quad __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000414// CHECK-LP64-NEXT: .quad __ZN9test5_B337funcB33Ev
415// CHECK-LP64-NEXT: .quad __ZN9test5_B327funcB32Ev
416// CHECK-LP64-NEXT: .quad __ZN9test5_B317funcB31Ev
417// CHECK-LP64-NEXT: .space 8
418// CHECK-LP64-NEXT: .quad 18446744073709551592
419// CHECK-LP64-NEXT: .quad __ZTI7test5_D
420// CHECK-LP64-NEXT: .quad __ZN4B2328funcB232Ev
421// CHECK-LP64-NEXT: .space 8
Mike Stumpb9837442009-08-20 07:22:17 +0000422// CHECK-LP64-NEXT: .quad 18446744073709551584
Mike Stump4ec04c42009-08-16 02:40:14 +0000423// CHECK-LP64-NEXT: .quad __ZTI7test5_D
424// CHECK-LP64-NEXT: .quad __ZN4B2318funcB231Ev
Mike Stumpd76264e2009-08-12 21:50:08 +0000425
Mike Stump276b9f12009-08-16 01:46:26 +0000426struct test8_B1 {
427 virtual void ftest8_B1() { }
428};
429struct test8_B2aa {
430 virtual void ftest8_B2aa() { }
431 int i;
432};
433struct test8_B2ab {
434 virtual void ftest8_B2ab() { }
435 int i;
436};
437struct test8_B2a : virtual test8_B2aa, virtual test8_B2ab {
438 virtual void ftest8_B2a() { }
439};
440struct test8_B2b {
441 virtual void ftest8_B2b() { }
442};
443struct test8_B2 : test8_B2a, test8_B2b {
444 virtual void ftest8_B2() { }
445};
446struct test8_B3 {
447 virtual void ftest8_B3() { }
448};
449class test8_D : test8_B1, test8_B2, test8_B3 {
Mike Stump09765ec2009-08-19 02:53:08 +0000450};
Mike Stump276b9f12009-08-16 01:46:26 +0000451
452// CHECK-LP32:__ZTV7test8_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000453// CHECK-LP32-NEXT: .long 24
454// CHECK-LP32-NEXT: .long 16
455// CHECK-LP32-NEXT: .space 4
Mike Stumpb46c92d2009-08-19 02:06:38 +0000456// CHECK-LP32-NEXT: .long __ZTI7test8_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000457// CHECK-LP32-NEXT: .long __ZN8test8_B19ftest8_B1Ev
458// CHECK-LP32-NEXT: .long 20
459// CHECK-LP32-NEXT: .long 12
Mike Stump7fa0d932009-08-20 02:11:48 +0000460// CHECK-LP32-NEXT: .long 4294967292
Mike Stump4ec04c42009-08-16 02:40:14 +0000461// CHECK-LP32-NEXT: .long __ZTI7test8_D
462// CHECK-LP32-NEXT: .long __ZN9test8_B2a10ftest8_B2aEv
463// CHECK-LP32-NEXT: .long __ZN8test8_B29ftest8_B2Ev
Mike Stumpb46c92d2009-08-19 02:06:38 +0000464// CHECK-LP32-NEXT: .long 4294967288
Mike Stump4ec04c42009-08-16 02:40:14 +0000465// CHECK-LP32-NEXT: .long __ZTI7test8_D
466// CHECK-LP32-NEXT: .long __ZN9test8_B2b10ftest8_B2bEv
Mike Stumpb46c92d2009-08-19 02:06:38 +0000467// CHECK-LP32-NEXT: .long 4294967284
Mike Stump4ec04c42009-08-16 02:40:14 +0000468// CHECK-LP32-NEXT: .long __ZTI7test8_D
469// CHECK-LP32-NEXT: .long __ZN8test8_B39ftest8_B3Ev
470// CHECK-LP32-NEXT: .space 4
471// CHECK-LP32-NEXT: .long 4294967280
472// CHECK-LP32-NEXT: .long __ZTI7test8_D
473// CHECK-LP32-NEXT: .long __ZN10test8_B2aa11ftest8_B2aaEv
474// CHECK-LP32-NEXT: .space 4
475// CHECK-LP32-NEXT: .long 4294967272
476// CHECK-LP32-NEXT: .long __ZTI7test8_D
477// CHECK-LP32-NEXT: .long __ZN10test8_B2ab11ftest8_B2abEv
Mike Stump276b9f12009-08-16 01:46:26 +0000478
479// CHECK-LP64:__ZTV7test8_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000480// CHECK-LP64-NEXT: .quad 48
481// CHECK-LP64-NEXT: .quad 32
482// CHECK-LP64-NEXT: .space 8
Mike Stumpb46c92d2009-08-19 02:06:38 +0000483// CHECK-LP64-NEXT: .quad __ZTI7test8_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000484// CHECK-LP64-NEXT: .quad __ZN8test8_B19ftest8_B1Ev
485// CHECK-LP64-NEXT: .quad 40
486// CHECK-LP64-NEXT: .quad 24
Mike Stump7fa0d932009-08-20 02:11:48 +0000487// CHECK-LP64-NEXT: .quad 18446744073709551608
Mike Stump4ec04c42009-08-16 02:40:14 +0000488// CHECK-LP64-NEXT: .quad __ZTI7test8_D
489// CHECK-LP64-NEXT: .quad __ZN9test8_B2a10ftest8_B2aEv
490// CHECK-LP64-NEXT: .quad __ZN8test8_B29ftest8_B2Ev
Mike Stumpb46c92d2009-08-19 02:06:38 +0000491// CHECK-LP64-NEXT: .quad 18446744073709551600
Mike Stump4ec04c42009-08-16 02:40:14 +0000492// CHECK-LP64-NEXT: .quad __ZTI7test8_D
493// CHECK-LP64-NEXT: .quad __ZN9test8_B2b10ftest8_B2bEv
Mike Stumpb46c92d2009-08-19 02:06:38 +0000494// CHECK-LP64-NEXT: .quad 18446744073709551592
Mike Stump4ec04c42009-08-16 02:40:14 +0000495// CHECK-LP64-NEXT: .quad __ZTI7test8_D
496// CHECK-LP64-NEXT: .quad __ZN8test8_B39ftest8_B3Ev
497// CHECK-LP64-NEXT: .space 8
498// CHECK-LP64-NEXT: .quad 18446744073709551584
499// CHECK-LP64-NEXT: .quad __ZTI7test8_D
500// CHECK-LP64-NEXT: .quad __ZN10test8_B2aa11ftest8_B2aaEv
501// CHECK-LP64-NEXT: .space 8
502// CHECK-LP64-NEXT: .quad 18446744073709551568
503// CHECK-LP64-NEXT: .quad __ZTI7test8_D
504// CHECK-LP64-NEXT: .quad __ZN10test8_B2ab11ftest8_B2abEv
Mike Stumpd76264e2009-08-12 21:50:08 +0000505
Mike Stump49520942009-08-11 04:03:59 +0000506
Mike Stump09765ec2009-08-19 02:53:08 +0000507struct test9_B3 { virtual void funcB3(); int i; };
508struct test9_B2 : virtual test9_B3 { virtual void funcB2(); int i; };
509struct test9_B1 : virtual test9_B2 { virtual void funcB1(); int i; };
510
511struct test9_B23 { virtual void funcB23(); int i; };
512struct test9_B22 : virtual test9_B23 { virtual void funcB22(); int i; };
513struct test9_B21 : virtual test9_B22 { virtual void funcB21(); int i; };
514
515
516struct test9_B232 { virtual void funcB232(); int i; };
517struct test9_B231 { virtual void funcB231(); int i; };
518
519struct test9_B33 { virtual void funcB33(); int i; };
520struct test9_B32 : virtual test9_B33, virtual test9_B232 { virtual void funcB32(); int i; };
521struct test9_B31 : virtual test9_B32, virtual test9_B231 { virtual void funcB31(); int i; };
522
523struct test9_D : virtual test9_B1, virtual test9_B21, virtual test9_B31 {
524 virtual void funcD() { }
525};
526
527// CHECK-LP64: __ZTV7test9_D:
528// CHECK-LP64-NEXT: .quad 168
529// CHECK-LP64-NEXT: .quad 152
530// CHECK-LP64-NEXT: .quad 136
531// CHECK-LP64-NEXT: .quad 120
532// CHECK-LP64-NEXT: .quad 104
533// CHECK-LP64-NEXT: .quad 88
534// CHECK-LP64-NEXT: .quad 72
535// CHECK-LP64-NEXT: .quad 56
536// CHECK-LP64-NEXT: .quad 40
537// CHECK-LP64-NEXT: .quad 24
538// CHECK-LP64-NEXT: .quad 8
539// CHECK-LP64-NEXT: .space 8
540// CHECK-LP64-NEXT: .quad __ZTI7test9_D
541// CHECK-LP64-NEXT: .quad __ZN7test9_D5funcDEv
542// CHECK-LP64-NEXT: .space 8
543// CHECK-LP64-NEXT: .quad 32
544// CHECK-LP64-NEXT: .quad 16
545// CHECK-LP64-NEXT: .quad 18446744073709551608
546// CHECK-LP64-NEXT: .quad __ZTI7test9_D
547// CHECK-LP64-NEXT: .quad __ZN8test9_B16funcB1Ev
548// CHECK-LP64-NEXT: .space 8
549// CHECK-LP64-NEXT: .quad 16
550// CHECK-LP64-NEXT: .quad 18446744073709551592
551// CHECK-LP64-NEXT: .quad __ZTI7test9_D
552// CHECK-LP64-NEXT: .quad __ZN8test9_B26funcB2Ev
553// CHECK-LP64-NEXT: .space 8
554// CHECK-LP64-NEXT: .quad 18446744073709551576
555// CHECK-LP64-NEXT: .quad __ZTI7test9_D
556// CHECK-LP64-NEXT: .quad __ZN8test9_B36funcB3Ev
557// CHECK-LP64-NEXT: .space 8
558// CHECK-LP64-NEXT: .quad 32
559// CHECK-LP64-NEXT: .quad 16
560// CHECK-LP64-NEXT: .quad 18446744073709551560
561// CHECK-LP64-NEXT: .quad __ZTI7test9_D
562// CHECK-LP64-NEXT: .quad __ZN9test9_B217funcB21Ev
563// CHECK-LP64-NEXT: .space 8
564// CHECK-LP64-NEXT: .quad 16
565// CHECK-LP64-NEXT: .quad 18446744073709551544
566// CHECK-LP64-NEXT: .quad __ZTI7test9_D
567// CHECK-LP64-NEXT: .quad __ZN9test9_B227funcB22Ev
568// CHECK-LP64-NEXT: .space 8
569// CHECK-LP64-NEXT: .quad 18446744073709551528
570// CHECK-LP64-NEXT: .quad __ZTI7test9_D
571// CHECK-LP64-NEXT: .quad __ZN9test9_B237funcB23Ev
572// CHECK-LP64-NEXT: .space 8
573// CHECK-LP64-NEXT: .quad 64
574// CHECK-LP64-NEXT: .quad 48
575// CHECK-LP64-NEXT: .quad 32
576// CHECK-LP64-NEXT: .quad 16
577// CHECK-LP64-NEXT: .quad 18446744073709551512
578// CHECK-LP64-NEXT: .quad __ZTI7test9_D
579// CHECK-LP64-NEXT: .quad __ZN9test9_B317funcB31Ev
580// CHECK-LP64-NEXT: .space 8
581// CHECK-LP64-NEXT: .quad 32
582// CHECK-LP64-NEXT: .quad 16
583// CHECK-LP64-NEXT: .quad 18446744073709551496
584// CHECK-LP64-NEXT: .quad __ZTI7test9_D
585// CHECK-LP64-NEXT: .quad __ZN9test9_B327funcB32Ev
586// CHECK-LP64-NEXT: .space 8
587// CHECK-LP64-NEXT: .quad 18446744073709551480
588// CHECK-LP64-NEXT: .quad __ZTI7test9_D
589// CHECK-LP64-NEXT: .quad __ZN9test9_B337funcB33Ev
590// CHECK-LP64-NEXT: .space 8
591// CHECK-LP64-NEXT: .quad 18446744073709551464
592// CHECK-LP64-NEXT: .quad __ZTI7test9_D
593// CHECK-LP64-NEXT: .quad __ZN10test9_B2328funcB232Ev
594// CHECK-LP64-NEXT: .space 8
595// CHECK-LP64-NEXT: .quad 18446744073709551448
596// CHECK-LP64-NEXT: .quad __ZTI7test9_D
597// CHECK-LP64-NEXT: .quad __ZN10test9_B2318funcB231Ev
598
599// CHECK-LP32: __ZTV7test9_D:
600// CHECK-LP32-NEXT: .long 84
601// CHECK-LP32-NEXT: .long 76
602// CHECK-LP32-NEXT: .long 68
603// CHECK-LP32-NEXT: .long 60
604// CHECK-LP32-NEXT: .long 52
605// CHECK-LP32-NEXT: .long 44
606// CHECK-LP32-NEXT: .long 36
607// CHECK-LP32-NEXT: .long 28
608// CHECK-LP32-NEXT: .long 20
609// CHECK-LP32-NEXT: .long 12
610// CHECK-LP32-NEXT: .long 4
611// CHECK-LP32-NEXT: .space 4
612// CHECK-LP32-NEXT: .long __ZTI7test9_D
613// CHECK-LP32-NEXT: .long __ZN7test9_D5funcDEv
614// CHECK-LP32-NEXT: .space 4
615// CHECK-LP32-NEXT: .long 16
616// CHECK-LP32-NEXT: .long 8
617// CHECK-LP32-NEXT: .long 4294967292
618// CHECK-LP32-NEXT: .long __ZTI7test9_D
619// CHECK-LP32-NEXT: .long __ZN8test9_B16funcB1Ev
620// CHECK-LP32-NEXT: .space 4
621// CHECK-LP32-NEXT: .long 8
622// CHECK-LP32-NEXT: .long 4294967284
623// CHECK-LP32-NEXT: .long __ZTI7test9_D
624// CHECK-LP32-NEXT: .long __ZN8test9_B26funcB2Ev
625// CHECK-LP32-NEXT: .space 4
626// CHECK-LP32-NEXT: .long 4294967276
627// CHECK-LP32-NEXT: .long __ZTI7test9_D
628// CHECK-LP32-NEXT: .long __ZN8test9_B36funcB3Ev
629// CHECK-LP32-NEXT: .space 4
630// CHECK-LP32-NEXT: .long 16
631// CHECK-LP32-NEXT: .long 8
632// CHECK-LP32-NEXT: .long 4294967268
633// CHECK-LP32-NEXT: .long __ZTI7test9_D
634// CHECK-LP32-NEXT: .long __ZN9test9_B217funcB21Ev
635// CHECK-LP32-NEXT: .space 4
636// CHECK-LP32-NEXT: .long 8
637// CHECK-LP32-NEXT: .long 4294967260
638// CHECK-LP32-NEXT: .long __ZTI7test9_D
639// CHECK-LP32-NEXT: .long __ZN9test9_B227funcB22Ev
640// CHECK-LP32-NEXT: .space 4
641// CHECK-LP32-NEXT: .long 4294967252
642// CHECK-LP32-NEXT: .long __ZTI7test9_D
643// CHECK-LP32-NEXT: .long __ZN9test9_B237funcB23Ev
644// CHECK-LP32-NEXT: .space 4
645// CHECK-LP32-NEXT: .long 32
646// CHECK-LP32-NEXT: .long 24
647// CHECK-LP32-NEXT: .long 16
648// CHECK-LP32-NEXT: .long 8
649// CHECK-LP32-NEXT: .long 4294967244
650// CHECK-LP32-NEXT: .long __ZTI7test9_D
651// CHECK-LP32-NEXT: .long __ZN9test9_B317funcB31Ev
652// CHECK-LP32-NEXT: .space 4
653// CHECK-LP32-NEXT: .long 16
654// CHECK-LP32-NEXT: .long 8
655// CHECK-LP32-NEXT: .long 4294967236
656// CHECK-LP32-NEXT: .long __ZTI7test9_D
657// CHECK-LP32-NEXT: .long __ZN9test9_B327funcB32Ev
658// CHECK-LP32-NEXT: .space 4
659// CHECK-LP32-NEXT: .long 4294967228
660// CHECK-LP32-NEXT: .long __ZTI7test9_D
661// CHECK-LP32-NEXT: .long __ZN9test9_B337funcB33Ev
662// CHECK-LP32-NEXT: .space 4
663// CHECK-LP32-NEXT: .long 4294967220
664// CHECK-LP32-NEXT: .long __ZTI7test9_D
665// CHECK-LP32-NEXT: .long __ZN10test9_B2328funcB232Ev
666// CHECK-LP32-NEXT: .space 4
667// CHECK-LP32-NEXT: .long 4294967212
668// CHECK-LP32-NEXT: .long __ZTI7test9_D
669// CHECK-LP32-NEXT: .long __ZN10test9_B2318funcB231Ev
670
Mike Stumpb9837442009-08-20 07:22:17 +0000671struct test10_O { int i; };
672
673struct test10_B1 : virtual test10_O {
674 virtual void ftest10_B1() { }
675};
676
677struct test10_B2aa : virtual test10_O {
678 int i;
679};
680struct test10_B2ab : virtual test10_O {
681 int i;
682};
683struct test10_B2a : virtual test10_B2aa, virtual test10_B2ab,virtual test10_O {
684 virtual void ftest10_B2a() { }
685};
686struct test10_B2b : virtual test10_O {
687 virtual void ftest10_B2b() { }
688};
689struct test10_B2 : test10_B2a {
690 virtual void ftest10_B2() { }
691};
692class test10_D : test10_B1, test10_B2 {
693
694 void ftest10_B2aa() { }
695};
696
697// CHECK-LP64:__ZTV8test10_D:
698// CHECK-LP64-NEXT: .quad 40
699// CHECK-LP64-NEXT: .quad 24
700// CHECK-LP64-NEXT: .quad 16
701// CHECK-LP64-NEXT: .space 8
702// CHECK-LP64-NEXT: .quad __ZTI8test10_D
703// CHECK-LP64-NEXT: .quad __ZN9test10_B110ftest10_B1Ev
704// CHECK-LP64-NEXT: .quad 32
705// CHECK-LP64-NEXT: .quad 8
706// CHECK-LP64-NEXT: .quad 16
707// CHECK-LP64-NEXT: .quad 18446744073709551608
708// CHECK-LP64-NEXT: .quad __ZTI8test10_D
709// CHECK-LP64-NEXT: .quad __ZN10test10_B2a11ftest10_B2aEv
710// CHECK-LP64-NEXT: .quad __ZN9test10_B210ftest10_B2Ev
711// CHECK-LP64-NEXT: .quad 18446744073709551608
712// CHECK-LP64-NEXT: .quad 18446744073709551592
713// CHECK-LP64-NEXT: .quad __ZTI8test10_D
714// CHECK-LP64-NEXT: .quad 18446744073709551592
715// CHECK-LP64-NEXT: .quad 18446744073709551576
716// CHECK-LP64-NEXT: .quad __ZTI8test10_D
717
718// CHECK-LP32: __ZTV8test10_D:
719// CHECK-LP32-NEXT: .long 20
720// CHECK-LP32-NEXT: .long 12
721// CHECK-LP32-NEXT: .long 8
722// CHECK-LP32-NEXT: .space 4
723// CHECK-LP32-NEXT: .long __ZTI8test10_D
724// CHECK-LP32-NEXT: .long __ZN9test10_B110ftest10_B1Ev
725// CHECK-LP32-NEXT: .long 16
726// CHECK-LP32-NEXT: .long 4
727// CHECK-LP32-NEXT: .long 8
728// CHECK-LP32-NEXT: .long 4294967292
729// CHECK-LP32-NEXT: .long __ZTI8test10_D
730// CHECK-LP32-NEXT: .long __ZN10test10_B2a11ftest10_B2aEv
731// CHECK-LP32-NEXT: .long __ZN9test10_B210ftest10_B2Ev
732// CHECK-LP32-NEXT: .long 4294967292
733// CHECK-LP32-NEXT: .long 4294967284
734// CHECK-LP32-NEXT: .long __ZTI8test10_D
735// CHECK-LP32-NEXT: .long 4294967284
736// CHECK-LP32-NEXT: .long 4294967276
737// CHECK-LP32-NEXT: .long __ZTI8test10_D
738
Mike Stumpb9871a22009-08-21 01:45:00 +0000739struct test11_B {
740 virtual void B1() { }
741 virtual void D() { }
742 virtual void B2() { }
743};
744
745struct test11_D : test11_B {
746 virtual void D1() { }
747 virtual void D() { }
748 virtual void D2() { }
749};
750
751// CHECK-LP32:__ZTV8test11_D:
752// CHECK-LP32-NEXT: .space 4
753// CHECK-LP32-NEXT: .long __ZTI8test11_D
754// CHECK-LP32-NEXT: .long __ZN8test11_B2B1Ev
755// CHECK-LP32-NEXT: .long __ZN8test11_D1DEv
756// CHECK-LP32-NEXT: .long __ZN8test11_B2B2Ev
757// CHECK-LP32-NEXT: .long __ZN8test11_D2D1Ev
758// CHECK-LP32-NEXT: .long __ZN8test11_D2D2Ev
759
760
761// CHECK-LP64:__ZTV8test11_D:
762// CHECK-LP64-NEXT: .space 8
763// CHECK-LP64-NEXT: .quad __ZTI8test11_D
764// CHECK-LP64-NEXT: .quad __ZN8test11_B2B1Ev
765// CHECK-LP64-NEXT: .quad __ZN8test11_D1DEv
766// CHECK-LP64-NEXT: .quad __ZN8test11_B2B2Ev
767// CHECK-LP64-NEXT: .quad __ZN8test11_D2D1Ev
768// CHECK-LP64-NEXT: .quad __ZN8test11_D2D2Ev
Mike Stumpb9837442009-08-20 07:22:17 +0000769
Mike Stumpdec025b2009-09-07 04:27:52 +0000770struct test13_B {
771 virtual void B1() { }
772 virtual void D() { }
773 virtual void Da();
774 virtual void Db() { }
775 virtual void Dc() { }
776 virtual void B2() { }
777 int i;
778};
779
780
781struct test13_NV1 {
782 virtual void fooNV1() { }
783 virtual void D() { }
784};
785
786
787struct test13_B2 : /* test13_NV1, */ virtual test13_B {
788 virtual void B2a() { }
789 virtual void B2() { }
790 virtual void D() { }
791 virtual void Da();
792 virtual void Dd() { }
793 virtual void B2b() { }
794 int i;
795};
796
797
798struct test13_D : test13_NV1, virtual test13_B2 {
799 virtual void D1() { }
800 virtual void D() { }
801 virtual void Db() { }
802 virtual void Dd() { }
803 virtual void D2() { }
804 virtual void fooNV1() { }
Mike Stumpd9878a12009-10-13 10:55:21 +0000805};
Mike Stumpdec025b2009-09-07 04:27:52 +0000806
807// CHECK-LP64:__ZTV8test13_D:
808// CHECK-LP64-NEXT: .quad 24
809// CHECK-LP64-NEXT: .quad 8
810// CHECK-LP64-NEXT: .space 8
811// CHECK-LP64-NEXT: .quad __ZTI8test13_D
812// CHECK-LP64-NEXT: .quad __ZN8test13_D6fooNV1Ev
813// CHECK-LP64-NEXT: .quad __ZN8test13_D1DEv
814// CHECK-LP64-NEXT: .quad __ZN8test13_D2D1Ev
815// CHECK-LP64-NEXT: .quad __ZN8test13_D2DbEv
816// CHECK-LP64-NEXT: .quad __ZN8test13_D2DdEv
817// CHECK-LP64-NEXT: .quad __ZN8test13_D2D2Ev
818// CHECK-LP64-NEXT: .space 8
819// CHECK-LP64-NEXT: .quad 18446744073709551608
820// CHECK-LP64-NEXT: .space 8
821// CHECK-LP64-NEXT: .quad 18446744073709551608
822// CHECK-LP64-NEXT: .space 8
823// CHECK-LP64-NEXT: .space 8
824// CHECK-LP64-NEXT: .quad 16
825// CHECK-LP64-NEXT: .quad 18446744073709551608
826// CHECK-LP64-NEXT: .quad __ZTI8test13_D
827// CHECK-LP64-NEXT: .quad __ZN9test13_B23B2aEv
828// CHECK-LP64-NEXT: .quad __ZN9test13_B22B2Ev
829// CHECK-LP64-NEXT: .quad __ZTv0_n48_N8test13_D1DEv
830// CHECK-LP64-NEXT: .quad __ZN9test13_B22DaEv
831// CHECK-LP64-NEXT: .quad __ZTv0_n64_N8test13_D2DdEv
832// CHECK-LP64-NEXT: .quad __ZN9test13_B23B2bEv
833// CHECK-LP64-NEXT: .quad 18446744073709551600
834// CHECK-LP64-NEXT: .space 8
835// CHECK-LP64-NEXT: .quad 18446744073709551592
836// CHECK-LP64-NEXT: .quad 18446744073709551600
837// CHECK-LP64-NEXT: .quad 18446744073709551592
838// CHECK-LP64-NEXT: .space 8
839// CHECK-LP64-NEXT: .quad 18446744073709551592
840// CHECK-LP64-NEXT: .quad __ZTI8test13_D
841// CHECK-LP64-NEXT: .quad __ZN8test13_B2B1Ev
842// CHECK-LP64-NEXT: .quad __ZTv0_n32_N8test13_D1DEv
843// CHECK-LP64-NEXT: .quad __ZTv0_n40_N9test13_B22DaEv
844// CHECK-LP64-NEXT: .quad __ZTv0_n48_N8test13_D2DbEv
845// CHECK-LP64-NEXT: .quad __ZN8test13_B2DcEv
846// CHECK-LP64-NEXT: .quad __ZTv0_n64_N9test13_B22B2Ev
847
848// CHECK-LP32:__ZTV8test13_D:
849// CHECK-LP32-NEXT: .long 12
850// CHECK-LP32-NEXT: .long 4
851// CHECK-LP32-NEXT: .space 4
852// CHECK-LP32-NEXT: .long __ZTI8test13_D
853// CHECK-LP32-NEXT: .long __ZN8test13_D6fooNV1Ev
854// CHECK-LP32-NEXT: .long __ZN8test13_D1DEv
855// CHECK-LP32-NEXT: .long __ZN8test13_D2D1Ev
856// CHECK-LP32-NEXT: .long __ZN8test13_D2DbEv
857// CHECK-LP32-NEXT: .long __ZN8test13_D2DdEv
858// CHECK-LP32-NEXT: .long __ZN8test13_D2D2Ev
859// CHECK-LP32-NEXT: .space 4
860// CHECK-LP32-NEXT: .long 4294967292
861// CHECK-LP32-NEXT: .space 4
862// CHECK-LP32-NEXT: .long 4294967292
863// CHECK-LP32-NEXT: .space 4
864// CHECK-LP32-NEXT: .space 4
865// CHECK-LP32-NEXT: .long 8
866// CHECK-LP32-NEXT: .long 4294967292
867// CHECK-LP32-NEXT: .long __ZTI8test13_D
868// CHECK-LP32-NEXT: .long __ZN9test13_B23B2aEv
869// CHECK-LP32-NEXT: .long __ZN9test13_B22B2Ev
870// CHECK-LP32-NEXT: .long __ZTv0_n24_N8test13_D1DEv
871// CHECK-LP32-NEXT: .long __ZN9test13_B22DaEv
872// CHECK-LP32-NEXT: .long __ZTv0_n32_N8test13_D2DdEv
873// CHECK-LP32-NEXT: .long __ZN9test13_B23B2bEv
874// CHECK-LP32-NEXT: .long 4294967288
875// CHECK-LP32-NEXT: .space 4
876// CHECK-LP32-NEXT: .long 4294967284
877// CHECK-LP32-NEXT: .long 4294967288
878// CHECK-LP32-NEXT: .long 4294967284
879// CHECK-LP32-NEXT: .space 4
880// CHECK-LP32-NEXT: .long 4294967284
881// CHECK-LP32-NEXT: .long __ZTI8test13_D
882// CHECK-LP32-NEXT: .long __ZN8test13_B2B1Ev
883// CHECK-LP32-NEXT: .long __ZTv0_n16_N8test13_D1DEv
884// CHECK-LP32-NEXT: .long __ZTv0_n20_N9test13_B22DaEv
885// CHECK-LP32-NEXT: .long __ZTv0_n24_N8test13_D2DbEv
886// CHECK-LP32-NEXT: .long __ZN8test13_B2DcEv
887// CHECK-LP32-NEXT: .long __ZTv0_n32_N9test13_B22B2Ev
888
Mike Stump09765ec2009-08-19 02:53:08 +0000889
Mike Stumpd9878a12009-10-13 10:55:21 +0000890class test14 {
891public:
892 virtual void initWithInt(int a);
893 static test14 *withInt(int a);
894};
895
896void test14::initWithInt(int a) { }
897
898test14 *test14::withInt(int a) {
899 test14 *me = new test14;
900 me->initWithInt(a);
901 return me;
902}
903
904
905struct test15_B {
906 virtual test15_B *foo1() { return 0; }
907 virtual test15_B *foo2() { return 0; }
908 virtual test15_B *foo3() { return 0; }
909 int i;
910};
911
912struct test15_NV1 {
913 virtual void fooNV1() { }
914 int i;
915};
916
917struct test15_B2 : test15_NV1, virtual test15_B {
918 virtual test15_B2 *foo1() { return 0; }
919 virtual test15_B2 *foo2() { return 0; }
920 int i;
921};
922
923struct test15_D : test15_NV1, virtual test15_B2 {
924 virtual test15_D *foo1() { return 0; }
925};
926
927// CHECK-LP64:__ZTV8test15_D:
928// CHECK-LP64-NEXT: .quad 32
929// CHECK-LP64-NEXT: .quad 16
930// CHECK-LP64-NEXT: .space 8
931// CHECK-LP64-NEXT: .quad __ZTI8test15_D
932// CHECK-LP64-NEXT: .quad __ZN10test15_NV16fooNV1Ev
933// CHECK-LP64-NEXT: .quad __ZN8test15_D4foo1Ev
934// CHECK-LP64-NEXT: .space 8
935// CHECK-LP64-NEXT: .quad 18446744073709551600
936// CHECK-LP64-NEXT: .space 8
937// CHECK-LP64-NEXT: .quad 16
938// CHECK-LP64-NEXT: .quad 18446744073709551600
939// CHECK-LP64-NEXT: .quad __ZTI8test15_D
940// CHECK-LP64-NEXT: .quad __ZN10test15_NV16fooNV1Ev
941// CHECK-LP64-NEXT: .quad __ZTcv0_n40_v0_n24_N8test15_D4foo1Ev
942// CHECK-LP64-NEXT: .quad __ZN9test15_B24foo2Ev
943// CHECK-LP64-NEXT: .space 8
944// CHECK-LP64-NEXT: .quad 18446744073709551600
945// CHECK-LP64-NEXT: .quad 18446744073709551584
946// CHECK-LP64-NEXT: .quad 18446744073709551584
947// CHECK-LP64-NEXT: .quad __ZTI8test15_D
948// CHECK-LP64-NEXT: .quad __ZTcv0_n24_v0_n32_N8test15_D4foo1Ev
949// CHECK-LP64-NEXT: .quad __ZTcv0_n32_v0_n24_N9test15_B24foo2Ev
950// CHECK-LP64-NEXT: .quad __ZN8test15_B4foo3Ev
951
952// CHECK-LP32:__ZTV8test15_D:
953// CHECK-LP32-NEXT: .long 20
954// CHECK-LP32-NEXT: .long 8
955// CHECK-LP32-NEXT: .space 4
956// CHECK-LP32-NEXT: .long __ZTI8test15_D
957// CHECK-LP32-NEXT: .long __ZN10test15_NV16fooNV1Ev
958// CHECK-LP32-NEXT: .long __ZN8test15_D4foo1Ev
959// CHECK-LP32-NEXT: .space 4
960// CHECK-LP32-NEXT: .long 4294967288
961// CHECK-LP32-NEXT: .space 4
962// CHECK-LP32-NEXT: .long 12
963// CHECK-LP32-NEXT: .long 4294967288
964// CHECK-LP32-NEXT: .long __ZTI8test15_D
965// CHECK-LP32-NEXT: .long __ZN10test15_NV16fooNV1Ev
966// CHECK-LP32-NEXT: .long __ZTcv0_n20_v0_n12_N8test15_D4foo1Ev
967// CHECK-LP32-NEXT: .long __ZN9test15_B24foo2Ev
968// CHECK-LP32-NEXT: .space 4
969// CHECK-LP32-NEXT: .long 4294967284
970// CHECK-LP32-NEXT: .long 4294967276
971// CHECK-LP32-NEXT: .long 4294967276
972// CHECK-LP32-NEXT: .long __ZTI8test15_D
973// CHECK-LP32-NEXT: .long __ZTcv0_n12_v0_n16_N8test15_D4foo1Ev
974// CHECK-LP32-NEXT: .long __ZTcv0_n16_v0_n12_N9test15_B24foo2Ev
975// CHECK-LP32-NEXT: .long __ZN8test15_B4foo3Ev
976
977
Mike Stump54150d92009-10-14 18:38:01 +0000978struct test16_NV1 {
979 virtual void fooNV1() { }
980virtual void foo_NV1() { }
981 int i;
982};
983
984struct test16_NV2 {
985 virtual test16_NV2* foo1() { return 0; }
986virtual void foo_NV2() { }
987virtual void foo_NV2b() { }
988 int i;
989};
990
991struct test16_B : public test16_NV1, test16_NV2 {
992 virtual test16_B *foo1() { return 0; }
993 virtual test16_B *foo2() { return 0; }
994 virtual test16_B *foo3() { return 0; }
995virtual void foo_B() { }
996 int i;
997};
998
999struct test16_B2 : test16_NV1, virtual test16_B {
1000 virtual test16_B2 *foo1() { return 0; }
1001 virtual test16_B2 *foo2() { return 0; }
1002virtual void foo_B2() { }
1003 int i;
1004};
1005
1006struct test16_D : test16_NV1, virtual test16_B2 {
1007 virtual test16_D *foo1() { return 0; }
1008};
1009
1010// CHECK-LP64: __ZTV8test16_D:
1011// CHECK-LP64-NEXT: .quad 32
1012// CHECK-LP64-NEXT: .quad 16
1013// CHECK-LP64-NEXT: .space 8
1014// CHECK-LP64-NEXT: .quad __ZTI8test16_D
1015// CHECK-LP64-NEXT: .quad __ZN10test16_NV16fooNV1Ev
1016// CHECK-LP64-NEXT: .quad __ZN10test16_NV17foo_NV1Ev
1017// CHECK-LP64-NEXT: .quad __ZN8test16_D4foo1Ev
1018// CHECK-LP64-NEXT: .space 8
1019// CHECK-LP64-NEXT: .space 8
1020// CHECK-LP64-NEXT: .quad 18446744073709551600
1021// CHECK-LP64-NEXT: .space 8
1022// CHECK-LP64-NEXT: .space 8
1023// CHECK-LP64-NEXT: .quad 16
1024// CHECK-LP64-NEXT: .quad 18446744073709551600
1025// CHECK-LP64-NEXT: .quad __ZTI8test16_D
1026// CHECK-LP64-NEXT: .quad __ZN10test16_NV16fooNV1Ev
1027// CHECK-LP64-NEXT: .quad __ZN10test16_NV17foo_NV1Ev
1028// CHECK-LP64-NEXT: .quad __ZTcv0_n48_v0_n24_N8test16_D4foo1Ev
1029// CHECK-LP64-NEXT: .quad __ZN9test16_B24foo2Ev
1030// CHECK-LP64-NEXT: .quad __ZN9test16_B26foo_B2Ev
1031// CHECK-LP64-NEXT .quad 16
1032// CHECK-LP64-NEXT .quad 16
1033// CHECK-LP64-NEXT: .space 8
1034// CHECK-LP64-NEXT: .space 8
1035// CHECK-LP64: .quad 18446744073709551600
1036// CHECK-LP64: .quad 18446744073709551584
1037// CHECK-LP64-NEXT: .space 8
1038// CHECK-LP64-NEXT: .space 8
1039// CHECK-LP64-NEXT: .quad 18446744073709551584
1040// CHECK-LP64-NEXT: .quad __ZTI8test16_D
1041// CHECK-LP64-NEXT: .quad __ZN10test16_NV16fooNV1Ev
1042// CHECK-LP64-NEXT: .quad __ZN10test16_NV17foo_NV1Ev
1043// CHECK-LP64-NEXT: .quad __ZTcv0_n40_v0_n32_N8test16_D4foo1Ev
1044// CHECK-LP64-NEXT: .quad __ZTcv0_n48_v0_n24_N9test16_B24foo2Ev
1045// CHECK-LP64-NEXT: .quad __ZN8test16_B4foo3Ev
1046// CHECK-LP64-NEXT: .quad __ZN8test16_B5foo_BEv
1047// CHECK-LP64-NEXT: .quad 18446744073709551568
1048// CHECK-LP64-NEXT: .quad __ZTI8test16_D
1049// CHECK-LP64-NEXT .quad __ZTcvn16_n40_v16_n32_N8test16_D4foo1Ev
1050// CHECK-LP64: .quad __ZN10test16_NV27foo_NV2Ev
1051// CHECK-LP64-NEXT: .quad __ZN10test16_NV28foo_NV2bEv
1052
1053// CHECK-LP32: __ZTV8test16_D:
1054// CHECK-LP32-NEXT: .long 20
1055// CHECK-LP32-NEXT: .long 8
1056// CHECK-LP32-NEXT: .space 4
1057// CHECK-LP32-NEXT: .long __ZTI8test16_D
1058// CHECK-LP32-NEXT: .long __ZN10test16_NV16fooNV1Ev
1059// CHECK-LP32-NEXT: .long __ZN10test16_NV17foo_NV1Ev
1060// CHECK-LP32-NEXT: .long __ZN8test16_D4foo1Ev
1061// CHECK-LP32-NEXT: .space 4
1062// CHECK-LP32-NEXT: .space 4
1063// CHECK-LP32-NEXT: .long 4294967288
1064// CHECK-LP32-NEXT: .space 4
1065// CHECK-LP32-NEXT: .space 4
1066// CHECK-LP32-NEXT: .long 12
1067// CHECK-LP32-NEXT: .long 4294967288
1068// CHECK-LP32-NEXT: .long __ZTI8test16_D
1069// CHECK-LP32-NEXT: .long __ZN10test16_NV16fooNV1Ev
1070// CHECK-LP32-NEXT: .long __ZN10test16_NV17foo_NV1Ev
1071// CHECK-LP32-NEXT: .long __ZTcv0_n24_v0_n12_N8test16_D4foo1Ev
1072// CHECK-LP32-NEXT: .long __ZN9test16_B24foo2Ev
1073// CHECK-LP32-NEXT: .long __ZN9test16_B26foo_B2Ev
1074// CHECK-LP32-NEXT .long 8
1075// CHECK-LP32-NEXT .long 8
1076// CHECK-LP32-NEXT: .space 4
1077// CHECK-LP32-NEXT: .space 4
1078// CHECK-LP32: .long 4294967284
1079// CHECK-LP32-NEXT: .long 4294967276
1080// CHECK-LP32-NEXT: .space 4
1081// CHECK-LP32-NEXT: .space 4
1082// CHECK-LP32-NEXT: .long 4294967276
1083// CHECK-LP32-NEXT: .long __ZTI8test16_D
1084// CHECK-LP32-NEXT: .long __ZN10test16_NV16fooNV1Ev
1085// CHECK-LP32-NEXT: .long __ZN10test16_NV17foo_NV1Ev
1086// CHECK-LP32-NEXT: .long __ZTcv0_n20_v0_n16_N8test16_D4foo1Ev
1087// CHECK-LP32-NEXT: .long __ZTcv0_n24_v0_n12_N9test16_B24foo2Ev
1088// CHECK-LP32-NEXT: .long __ZN8test16_B4foo3Ev
1089// CHECK-LP32-NEXT: .long __ZN8test16_B5foo_BEv
1090// CHECK-LP32-NEXT: .long 4294967268
1091// CHECK-LP32-NEXT: .long __ZTI8test16_D
1092// CHECK-LP32-NEXT .long __ZTcvn8_n20_v8_n16_N8test16_D4foo1Ev
1093// CHECK-LP32: .long __ZN10test16_NV27foo_NV2Ev
1094// CHECK-LP32-NEXT: .long __ZN10test16_NV28foo_NV2bEv
1095
Mike Stumpd9878a12009-10-13 10:55:21 +00001096
Mike Stump7809e0d2009-10-28 00:35:46 +00001097class test17_B1 {
1098 virtual void foo() = 0;
1099 virtual void bar() { }
1100};
1101
1102class test17_B2 : public test17_B1 {
1103 void foo() { }
1104 virtual void bar() = 0;
1105};
1106
1107class test17_D : public test17_B2 {
1108 void bar() { }
Mike Stump62db2452009-11-03 19:28:52 +00001109};
Mike Stump7809e0d2009-10-28 00:35:46 +00001110
1111
1112// CHECK-LP64:__ZTV8test17_D:
1113// CHECK-LP64-NEXT: .space 8
1114// CHECK-LP64-NEXT: .quad __ZTI8test17_D
1115// CHECK-LP64-NEXT: .quad __ZN9test17_B23fooEv
1116// CHECK-LP64-NEXT: .quad __ZN8test17_D3barEv
1117
1118// CHECK-LP64:__ZTV9test17_B2:
1119// CHECK-LP64-NEXT: .space 8
1120// CHECK-LP64-NEXT: .quad __ZTI9test17_B2
1121// CHECK-LP64-NEXT: .quad __ZN9test17_B23fooEv
1122// CHECK-LP64-NEXT: .quad ___cxa_pure_virtual
1123
1124// CHECK-LP64:__ZTV9test17_B1:
1125// CHECK-LP64-NEXT: .space 8
1126// CHECK-LP64-NEXT: .quad __ZTI9test17_B1
1127// CHECK-LP64-NEXT: .quad ___cxa_pure_virtual
1128// CHECK-LP64-NEXT: .quad __ZN9test17_B13barEv
1129
1130
Mike Stump9c212892009-11-03 19:03:17 +00001131struct test18_NV1 {
1132 virtual void fooNV1() { }
1133virtual void foo_NV1() { }
1134 int i;
1135};
1136
1137struct test18_NV2 {
1138 virtual test18_NV2& foo1() { return *this; }
1139virtual void foo_NV2() { }
1140virtual void foo_NV2b() { }
1141 int i;
1142};
1143
1144struct test18_B : public test18_NV1, test18_NV2 {
1145 virtual test18_B& foo1() { return *this; }
1146 virtual test18_B *foo2() { return 0; }
1147 virtual test18_B *foo3() { return 0; }
1148virtual void foo_B() { }
1149 int i;
1150};
1151
1152struct test18_B2 : test18_NV1, virtual test18_B {
1153 virtual test18_B2& foo1() { return *this; }
1154 virtual test18_B2 *foo2() { return 0; }
1155virtual void foo_B2() { }
1156 int i;
1157};
1158
1159struct test18_D : test18_NV1, virtual test18_B2 {
1160 virtual test18_D& foo1() { return *this; }
Mike Stump62db2452009-11-03 19:28:52 +00001161};
1162
1163
1164struct test19_VB1 { };
1165struct test19_B1 : public virtual test19_VB1 {
1166 virtual void fB1() { }
1167 virtual void foB1B2() { }
1168 virtual void foB1B3() { }
1169 virtual void foB1B4() { }
1170};
1171
1172struct test19_VB2 { };
1173struct test19_B2: public test19_B1, public virtual test19_VB2 {
1174 virtual void foB1B2() { }
1175 virtual void foB1B3() { }
1176 virtual void foB1B4() { }
1177
1178 virtual void fB2() { }
1179 virtual void foB2B3() { }
1180 virtual void foB2B4() { }
1181};
1182
1183struct test19_VB3 { };
1184struct test19_B3: virtual public test19_B2, public virtual test19_VB3 {
1185 virtual void foB1B3() { }
1186 virtual void foB1B4() { }
1187
1188 virtual void foB2B3() { }
1189 virtual void foB2B4() { }
1190
1191 virtual void fB3() { }
1192 virtual void foB3B4() { }
1193};
1194
1195struct test19_VB4 { };
1196struct test19_B4: public test19_B3, public virtual test19_VB4 {
1197 virtual void foB1B4() { }
1198
1199 virtual void foB2B4() { }
1200
1201 virtual void foB3B4() { }
1202
1203 virtual void fB4() { }
1204};
1205
1206struct test19_D : virtual test19_B4 {
1207};
1208
1209
1210// CHECK-LP64: __ZTV8test19_D:
1211// CHECK-LP64-NEXT: .space 8
1212// CHECK-LP64-NEXT: .space 8
1213// CHECK-LP64-NEXT: .space 8
1214// CHECK-LP64-NEXT: .space 8
1215// CHECK-LP64-NEXT: .space 8
1216// CHECK-LP64-NEXT: .space 8
1217// CHECK-LP64-NEXT: .space 8
1218// CHECK-LP64-NEXT: .space 8
1219// CHECK-LP64-NEXT: .space 8
1220// CHECK-LP64-NEXT: .space 8
1221// CHECK-LP64-NEXT: .space 8
1222// CHECK-LP64-NEXT: .space 8
1223// CHECK-LP64-NEXT: .space 8
1224// CHECK-LP64-NEXT: .space 8
1225// CHECK-LP64-NEXT: .space 8
1226// CHECK-LP64-NEXT: .space 8
1227// CHECK-LP64-NEXT: .space 8
1228// CHECK-LP64-NEXT: .quad __ZTI8test19_D
1229// CHECK-LP64-NEXT .quad __ZN9test19_B13fB1Ev
1230// CHECK-LP64-NEXT .quad __ZN9test19_B26foB1B2Ev
1231// CHECK-LP64-NEXT .quad __ZN9test19_B36foB1B3Ev
1232// CHECK-LP64-NEXT .quad __ZN9test19_B46foB1B4Ev
1233// CHECK-LP64-NEXT .quad __ZN9test19_B23fB2Ev
1234// CHECK-LP64-NEXT .quad __ZN9test19_B36foB2B3Ev
1235// CHECK-LP64-NEXT .quad __ZN9test19_B46foB2B4Ev
1236// CHECK-LP64-NEXT .quad __ZN9test19_B33fB3Ev
1237// CHECK-LP64-NEXT .quad __ZN9test19_B46foB3B4Ev
1238// CHECK-LP64-NEXT .quad __ZN9test19_B43fB4Ev
1239
Mike Stump9c212892009-11-03 19:03:17 +00001240
Mike Stump7809e0d2009-10-28 00:35:46 +00001241
Mike Stump26899b02009-08-05 22:48:36 +00001242// CHECK-LP64: __ZTV1B:
Mike Stumpb46c92d2009-08-19 02:06:38 +00001243// CHECK-LP64-NEXT: .space 8
1244// CHECK-LP64-NEXT: .quad __ZTI1B
Mike Stump4ec04c42009-08-16 02:40:14 +00001245// CHECK-LP64-NEXT: .quad __ZN1B4bar1Ev
1246// CHECK-LP64-NEXT: .quad __ZN1B4bar2Ev
Mike Stump26899b02009-08-05 22:48:36 +00001247
1248// CHECK-LP32: __ZTV1B:
Mike Stumpb46c92d2009-08-19 02:06:38 +00001249// CHECK-LP32-NEXT: .space 4
1250// CHECK-LP32-NEXT: .long __ZTI1B
Mike Stump4ec04c42009-08-16 02:40:14 +00001251// CHECK-LP32-NEXT: .long __ZN1B4bar1Ev
1252// CHECK-LP32-NEXT: .long __ZN1B4bar2Ev
Mike Stump26899b02009-08-05 22:48:36 +00001253
Mike Stump06758d02009-08-04 20:37:29 +00001254// CHECK-LP64: __ZTV1A:
Mike Stump4ec04c42009-08-16 02:40:14 +00001255// CHECK-LP64-NEXT: .space 8
Mike Stumpb46c92d2009-08-19 02:06:38 +00001256// CHECK-LP64-NEXT: .quad __ZTI1A
Mike Stump4ec04c42009-08-16 02:40:14 +00001257// CHECK-LP64-NEXT: .quad __ZN1B4bar1Ev
1258// CHECK-LP64-NEXT: .quad __ZN1B4bar2Ev
1259// CHECK-LP64-NEXT: .quad __ZN1A4foo1Ev
1260// CHECK-LP64-NEXT: .quad __ZN1A4foo2Ev
Mike Stumpb46c92d2009-08-19 02:06:38 +00001261// CHECK-LP64-NEXT: .quad 18446744073709551600
Mike Stump4ec04c42009-08-16 02:40:14 +00001262// CHECK-LP64-NEXT: .quad __ZTI1A
1263// CHECK-LP64-NEXT: .quad __ZN1C4bee1Ev
1264// CHECK-LP64-NEXT: .quad __ZN1C4bee2Ev
Mike Stump06758d02009-08-04 20:37:29 +00001265
1266// CHECK-LP32: __ZTV1A:
Mike Stump4ec04c42009-08-16 02:40:14 +00001267// CHECK-LP32-NEXT: .space 4
Mike Stumpb46c92d2009-08-19 02:06:38 +00001268// CHECK-LP32-NEXT: .long __ZTI1A
Mike Stump4ec04c42009-08-16 02:40:14 +00001269// CHECK-LP32-NEXT: .long __ZN1B4bar1Ev
1270// CHECK-LP32-NEXT: .long __ZN1B4bar2Ev
1271// CHECK-LP32-NEXT: .long __ZN1A4foo1Ev
1272// CHECK-LP32-NEXT: .long __ZN1A4foo2Ev
Mike Stumpb46c92d2009-08-19 02:06:38 +00001273// CHECK-LP32-NEXT: .long 4294967284
Mike Stump4ec04c42009-08-16 02:40:14 +00001274// CHECK-LP32-NEXT: .long __ZTI1A
1275// CHECK-LP32-NEXT: .long __ZN1C4bee1Ev
1276// CHECK-LP32-NEXT: .long __ZN1C4bee2Ev
Mike Stump8a12b562009-08-06 15:50:11 +00001277
Mike Stump928f1502009-08-07 19:00:50 +00001278// CHECK-LP32:__ZTV1F:
Mike Stump4ec04c42009-08-16 02:40:14 +00001279// CHECK-LP32-NEXT: .space 4
1280// CHECK-LP32-NEXT: .long 8
1281// CHECK-LP32-NEXT: .space 4
1282// CHECK-LP32-NEXT: .space 4
Mike Stumpb46c92d2009-08-19 02:06:38 +00001283// CHECK-LP32-NEXT: .long __ZTI1F
Mike Stump4ec04c42009-08-16 02:40:14 +00001284// CHECK-LP32-NEXT: .long __ZN1D3booEv
1285// CHECK-LP32-NEXT: .long __ZN1F3fooEv
1286// CHECK-LP32-NEXT: .space 4
1287// CHECK-LP32-NEXT: .space 4
1288// CHECK-LP32-NEXT: .space 4
1289// CHECK-LP32-NEXT: .space 4
1290// CHECK-LP32-NEXT: .space 4
1291// CHECK-LP32-NEXT: .long 4294967288
1292// CHECK-LP32-NEXT: .long __ZTI1F
1293// CHECK-LP32-NEXT: .long __ZN2D13barEv
1294// CHECK-LP32-NEXT: .long __ZN2D14bar2Ev
1295// CHECK-LP32-NEXT: .long __ZN2D14bar3Ev
1296// CHECK-LP32-NEXT: .long __ZN2D14bar4Ev
1297// CHECK-LP32-NEXT: .long __ZN2D14bar5Ev
Mike Stump8a12b562009-08-06 15:50:11 +00001298
1299// CHECK-LP64: __ZTV1F:
Mike Stump4ec04c42009-08-16 02:40:14 +00001300// CHECK-LP64-NEXT: .space 8
1301// CHECK-LP64-NEXT: .quad 16
1302// CHECK-LP64-NEXT: .space 8
1303// CHECK-LP64-NEXT: .space 8
Mike Stumpb46c92d2009-08-19 02:06:38 +00001304// CHECK-LP64-NEXT: .quad __ZTI1F
Mike Stump4ec04c42009-08-16 02:40:14 +00001305// CHECK-LP64-NEXT: .quad __ZN1D3booEv
1306// CHECK-LP64-NEXT: .quad __ZN1F3fooEv
1307// CHECK-LP64-NEXT: .space 8
1308// CHECK-LP64-NEXT: .space 8
1309// CHECK-LP64-NEXT: .space 8
1310// CHECK-LP64-NEXT: .space 8
1311// CHECK-LP64-NEXT: .space 8
1312// CHECK-LP64-NEXT: .quad 18446744073709551600
1313// CHECK-LP64-NEXT: .quad __ZTI1F
1314// CHECK-LP64-NEXT: .quad __ZN2D13barEv
1315// CHECK-LP64-NEXT: .quad __ZN2D14bar2Ev
1316// CHECK-LP64-NEXT: .quad __ZN2D14bar3Ev
1317// CHECK-LP64-NEXT: .quad __ZN2D14bar4Ev
1318// CHECK-LP64-NEXT: .quad __ZN2D14bar5Ev
Mike Stump49520942009-08-11 04:03:59 +00001319
Mike Stump62db2452009-11-03 19:28:52 +00001320test19_D d19;
1321test18_D d18;
1322test17_D d17;
Mike Stump54150d92009-10-14 18:38:01 +00001323test16_D d16;
Mike Stumpd9878a12009-10-13 10:55:21 +00001324test15_D d15;
1325test13_D d13;
Mike Stumpb9871a22009-08-21 01:45:00 +00001326test11_D d11;
Mike Stumpb9837442009-08-20 07:22:17 +00001327test10_D d10;
Mike Stump09765ec2009-08-19 02:53:08 +00001328test9_D d9;
1329test8_D d8;
1330
Mike Stumpd76264e2009-08-12 21:50:08 +00001331test5_D d5;
Mike Stump34fae9c2009-08-12 18:50:26 +00001332test4_D d4;
1333test3_D d3;
Mike Stump78846782009-08-13 23:33:29 +00001334
1335test6_D d6;
1336test7_D d7;