blob: cc4220752fcca3b23e05c804b012e46b644400cf [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 &&
10
Mike Stump06758d02009-08-04 20:37:29 +000011// RUN: true
Mike Stump3dee6ef2009-07-30 00:22:38 +000012
Mike Stump104ffaa2009-08-04 21:58:42 +000013struct B {
14 virtual void bar1();
15 virtual void bar2();
Mike Stump2effeca2009-08-06 00:38:46 +000016 int b;
Mike Stump104ffaa2009-08-04 21:58:42 +000017};
Mike Stump6f376332009-08-05 22:37:18 +000018void B::bar1() { }
19void B::bar2() { }
20
21struct C {
22 virtual void bee1();
23 virtual void bee2();
24};
25void C::bee1() { }
26void C::bee2() { }
Mike Stump104ffaa2009-08-04 21:58:42 +000027
Mike Stump2effeca2009-08-06 00:38:46 +000028struct D {
29 virtual void boo();
30};
31void D::boo() { }
Mike Stump104ffaa2009-08-04 21:58:42 +000032
Mike Stumpc5708d92009-08-06 14:12:47 +000033struct D1 {
34 virtual void bar();
Mike Stump02cf1e22009-08-06 23:48:32 +000035 virtual void bar2();
36 virtual void bar3();
37 virtual void bar4();
38 virtual void bar5();
Mike Stumpc5708d92009-08-06 14:12:47 +000039 void *d1;
40};
41void D1::bar() { }
42
43class F : virtual public D1, virtual public D {
44public:
45 virtual void foo();
46 void *f;
47};
48void F::foo() { }
49
50int j;
51void test2() {
52 F f;
53 static int sz = (char *)(&f.f) - (char *)(&f);
54 j = sz;
Mike Stump37148f42009-08-06 14:16:19 +000055 // FIXME: These should result in a frontend constant a la fold, no run time
56 // initializer
Mike Stump49520942009-08-11 04:03:59 +000057 // CHECK-LPOPT32: movl $4, __ZZ5test2vE2sz
58 // CHECK-LPOPT64: movl $8, __ZZ5test2vE2sz(%rip)
Mike Stumpc5708d92009-08-06 14:12:47 +000059}
Mike Stump8a12b562009-08-06 15:50:11 +000060
Mike Stumpc5708d92009-08-06 14:12:47 +000061static_assert(sizeof(F) == sizeof(void*)*4, "invalid vbase size");
62
Mike Stump2effeca2009-08-06 00:38:46 +000063struct E {
64 int e;
65};
66
67static_assert (sizeof (C) == (sizeof(void *)), "vtable pointer layout");
68
Mike Stumpeb19fa92009-08-06 13:41:24 +000069class A : public E, public B, public C {
Mike Stump3dee6ef2009-07-30 00:22:38 +000070public:
Mike Stump06758d02009-08-04 20:37:29 +000071 virtual void foo1();
72 virtual void foo2();
73 A() { }
Mike Stump2effeca2009-08-06 00:38:46 +000074 int a;
75} *ap;
Mike Stump6f376332009-08-05 22:37:18 +000076void A::foo1() { }
77void A::foo2() { }
Mike Stump3dee6ef2009-07-30 00:22:38 +000078
Mike Stump06758d02009-08-04 20:37:29 +000079int main() {
80 A a;
Mike Stump26899b02009-08-05 22:48:36 +000081 B b;
Mike Stump2effeca2009-08-06 00:38:46 +000082 ap->e = 1;
83 ap->b = 2;
Mike Stump06758d02009-08-04 20:37:29 +000084}
85
Mike Stump2effeca2009-08-06 00:38:46 +000086// CHECK-LP32: main:
87// CHECK-LP32: movl $1, 8(%eax)
88// CHECK-LP32: movl $2, 4(%eax)
89
90// CHECK-LP64: main:
91// CHECK-LP64: movl $1, 12(%rax)
92// CHECK-LP64: movl $2, 8(%rax)
93
Mike Stumpf0070db2009-08-26 20:46:33 +000094struct test12_A {
95 virtual void foo0() { }
96 virtual void foo();
97} *test12_pa;
98
99struct test12_B : public test12_A {
100 virtual void foo() { }
101} *test12_pb;
102
103struct test12_D : public test12_B {
104} *test12_pd;
105void test12_foo() {
106 test12_pa->foo0();
107 test12_pb->foo0();
108 test12_pd->foo0();
109 test12_pa->foo();
110 test12_pb->foo();
111 test12_pd->foo();
112 test12_pa->test12_A::foo();
113}
114
115// CHECK-LPOPT32:__Z10test12_foov:
116// CHECK-LPOPT32: movl _test12_pa, %eax
117// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
118// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
119// CHECK-LPOPT32-NEXT: call *(%ecx)
120// CHECK-LPOPT32-NEXT: movl _test12_pb, %eax
121// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
122// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
123// CHECK-LPOPT32-NEXT: call *(%ecx)
124// CHECK-LPOPT32-NEXT: movl _test12_pd, %eax
125// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
126// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
127// CHECK-LPOPT32-NEXT: call *(%ecx)
128// CHECK-LPOPT32-NEXT: movl _test12_pa, %eax
129// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
130// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
131// CHECK-LPOPT32-NEXT: call *4(%ecx)
132// CHECK-LPOPT32-NEXT: movl _test12_pb, %eax
133// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
134// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
135// CHECK-LPOPT32-NEXT: call *4(%ecx)
136// CHECK-LPOPT32-NEXT: movl _test12_pd, %eax
137// CHECK-LPOPT32-NEXT: movl (%eax), %ecx
138// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
139// CHECK-LPOPT32-NEXT: call *4(%ecx)
Mike Stump63bb7c22009-08-26 23:38:08 +0000140// CHECK-LPOPT32-NEXT: movl _test12_pa, %eax
141// CHECK-LPOPT32-NEXT: movl %eax, (%esp)
142// CHECK-LPOPT32-NEXT: call L__ZN8test12_A3fooEv$stub
Mike Stumpf0070db2009-08-26 20:46:33 +0000143
144// CHECK-LPOPT64:__Z10test12_foov:
145// CHECK-LPOPT64: movq _test12_pa(%rip), %rdi
146// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
147// CHECK-LPOPT64-NEXT: call *(%rax)
148// CHECK-LPOPT64-NEXT: movq _test12_pb(%rip), %rdi
149// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
150// CHECK-LPOPT64-NEXT: call *(%rax)
151// CHECK-LPOPT64-NEXT: movq _test12_pd(%rip), %rdi
152// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
153// CHECK-LPOPT64-NEXT: call *(%rax)
154// CHECK-LPOPT64-NEXT: movq _test12_pa(%rip), %rdi
155// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
156// CHECK-LPOPT64-NEXT: call *8(%rax)
157// CHECK-LPOPT64-NEXT: movq _test12_pb(%rip), %rdi
158// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
159// CHECK-LPOPT64-NEXT: call *8(%rax)
160// CHECK-LPOPT64-NEXT: movq _test12_pd(%rip), %rdi
161// CHECK-LPOPT64-NEXT: movq (%rdi), %rax
162// CHECK-LPOPT64-NEXT: call *8(%rax)
Mike Stump63bb7c22009-08-26 23:38:08 +0000163// CHECK-LPOPT64-NEXT: movq _test12_pa(%rip), %rdi
164// CHECK-LPOPT64-NEXT: call __ZN8test12_A3fooEv
Mike Stump49520942009-08-11 04:03:59 +0000165
Mike Stump94d0bce2009-08-13 00:34:14 +0000166struct test6_B2 { virtual void funcB2(); char b[1000]; };
167struct test6_B1 : virtual test6_B2 { virtual void funcB1(); };
168
169struct test6_D : test6_B2, virtual test6_B1 {
170};
171
Mike Stump16334272009-08-21 15:22:41 +0000172// CHECK-LP32: .zerofill __DATA, __common, _d6, 2012, 4
Mike Stump94d0bce2009-08-13 00:34:14 +0000173// CHECK-LP64: .zerofill __DATA, __common, _d6, 2024, 4
174
Mike Stump78846782009-08-13 23:33:29 +0000175struct test7_B2 { virtual void funcB2(); };
176struct test7_B1 : virtual test7_B2 { virtual void funcB1(); };
177
178struct test7_D : test7_B2, virtual test7_B1 {
179};
180
Mike Stump16334272009-08-21 15:22:41 +0000181// CHECK-LP32: .zerofill __DATA, __common, _d7, 8, 3
Mike Stump78846782009-08-13 23:33:29 +0000182// CHECK-LP64: .zerofill __DATA, __common, _d7, 16, 3
Mike Stump94d0bce2009-08-13 00:34:14 +0000183
184
Mike Stump49520942009-08-11 04:03:59 +0000185struct test3_B3 { virtual void funcB3(); };
186struct test3_B2 : virtual test3_B3 { virtual void funcB2(); };
187struct test3_B1 : virtual test3_B2 { virtual void funcB1(); };
188
Mike Stumpf0070db2009-08-26 20:46:33 +0000189struct test3_D : virtual test3_B1 {
Mike Stump49520942009-08-11 04:03:59 +0000190 virtual void funcD() { }
191};
192
193// CHECK-LP32:__ZTV7test3_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000194// CHECK-LP32-NEXT: .space 4
195// CHECK-LP32-NEXT: .space 4
196// CHECK-LP32-NEXT: .space 4
197// CHECK-LP32-NEXT: .space 4
198// CHECK-LP32-NEXT: .space 4
199// CHECK-LP32-NEXT: .space 4
200// CHECK-LP32-NEXT: .space 4
Mike Stump666a91e2009-08-21 18:05:02 +0000201// CHECK-LP32-NEXT: .long __ZTI7test3_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000202// CHECK-LP32-NEXT: .long __ZN8test3_B36funcB3Ev
203// CHECK-LP32-NEXT: .long __ZN8test3_B26funcB2Ev
204// CHECK-LP32-NEXT: .long __ZN8test3_B16funcB1Ev
205// CHECK-LP32-NEXT: .long __ZN7test3_D5funcDEv
Mike Stump49520942009-08-11 04:03:59 +0000206
207// CHECK-LP64:__ZTV7test3_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000208// CHECK-LP64-NEXT: .space 8
209// CHECK-LP64-NEXT: .space 8
210// CHECK-LP64-NEXT: .space 8
211// CHECK-LP64-NEXT: .space 8
212// CHECK-LP64-NEXT: .space 8
213// CHECK-LP64-NEXT: .space 8
214// CHECK-LP64-NEXT: .space 8
Mike Stump666a91e2009-08-21 18:05:02 +0000215// CHECK-LP64-NEXT: .quad __ZTI7test3_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000216// CHECK-LP64-NEXT: .quad __ZN8test3_B36funcB3Ev
217// CHECK-LP64-NEXT: .quad __ZN8test3_B26funcB2Ev
218// CHECK-LP64-NEXT: .quad __ZN8test3_B16funcB1Ev
219// CHECK-LP64-NEXT: .quad __ZN7test3_D5funcDEv
Mike Stump49520942009-08-11 04:03:59 +0000220
Mike Stump34fae9c2009-08-12 18:50:26 +0000221struct test4_D : virtual B, virtual C {
222};
223
224// CHECK-LP32:__ZTV7test4_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000225// CHECK-LP32-NEXT: .space 4
226// CHECK-LP32-NEXT: .long 4
227// CHECK-LP32-NEXT: .space 4
228// CHECK-LP32-NEXT: .space 4
229// CHECK-LP32-NEXT: .space 4
230// CHECK-LP32-NEXT: .long __ZTI7test4_D
231// CHECK-LP32-NEXT: .long __ZN1C4bee1Ev
232// CHECK-LP32-NEXT: .long __ZN1C4bee2Ev
233// CHECK-LP32-NEXT: .space 4
234// CHECK-LP32-NEXT: .space 4
235// CHECK-LP32-NEXT: .long 4294967292
236// CHECK-LP32-NEXT: .long __ZTI7test4_D
237// CHECK-LP32-NEXT: .long __ZN1B4bar1Ev
238// CHECK-LP32-NEXT: .long __ZN1B4bar2Ev
Mike Stump34fae9c2009-08-12 18:50:26 +0000239
240// CHECK-LP64:__ZTV7test4_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000241// CHECK-LP64-NEXT: .space 8
242// CHECK-LP64-NEXT: .quad 8
243// CHECK-LP64-NEXT: .space 8
244// CHECK-LP64-NEXT: .space 8
245// CHECK-LP64-NEXT: .space 8
246// CHECK-LP64-NEXT: .quad __ZTI7test4_D
247// CHECK-LP64-NEXT: .quad __ZN1C4bee1Ev
248// CHECK-LP64-NEXT: .quad __ZN1C4bee2Ev
249// CHECK-LP64-NEXT: .space 8
250// CHECK-LP64-NEXT: .space 8
251// CHECK-LP64-NEXT: .quad 18446744073709551608
252// CHECK-LP64-NEXT: .quad __ZTI7test4_D
253// CHECK-LP64-NEXT: .quad __ZN1B4bar1Ev
254// CHECK-LP64-NEXT: .quad __ZN1B4bar2Ev
Mike Stump34fae9c2009-08-12 18:50:26 +0000255
Mike Stump49520942009-08-11 04:03:59 +0000256
Mike Stumpd76264e2009-08-12 21:50:08 +0000257struct test5_B3 { virtual void funcB3(); };
258struct test5_B2 : virtual test5_B3 { virtual void funcB2(); };
259struct test5_B1 : virtual test5_B2 { virtual void funcB1(); };
260
261struct test5_B23 { virtual void funcB23(); };
262struct test5_B22 : virtual test5_B23 { virtual void funcB22(); };
263struct test5_B21 : virtual test5_B22 { virtual void funcB21(); };
264
265
266struct B232 { virtual void funcB232(); };
267struct B231 { virtual void funcB231(); };
268
269struct test5_B33 { virtual void funcB33(); };
270struct test5_B32 : virtual test5_B33, virtual B232 { virtual void funcB32(); };
271struct test5_B31 : virtual test5_B32, virtual B231 { virtual void funcB31(); };
272
273struct test5_D : virtual test5_B1, virtual test5_B21, virtual test5_B31 {
274 virtual void funcD() { }
275};
276
277// CHECK-LP32:__ZTV7test5_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000278// CHECK-LP32-NEXT: .long 16
279// CHECK-LP32-NEXT: .long 12
Mike Stumpfe3010d2009-08-16 19:04:13 +0000280// CHECK-LP32-NEXT: .long 8
281// CHECK-LP32-NEXT: .long 8
282// CHECK-LP32-NEXT: .long 8
283// CHECK-LP32-NEXT: .long 4
284// CHECK-LP32-NEXT: .long 4
285// CHECK-LP32-NEXT: .long 4
286// CHECK-LP32-NEXT: .space 4
Mike Stump4ec04c42009-08-16 02:40:14 +0000287// CHECK-LP32-NEXT: .space 4
288// CHECK-LP32-NEXT: .space 4
289// CHECK-LP32-NEXT: .space 4
290// CHECK-LP32-NEXT: .space 4
291// CHECK-LP32-NEXT: .space 4
292// CHECK-LP32-NEXT: .space 4
Mike Stumpb9837442009-08-20 07:22:17 +0000293// CHECK-LP32-NEXT: .long __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000294// CHECK-LP32-NEXT: .long __ZN8test5_B36funcB3Ev
295// CHECK-LP32-NEXT: .long __ZN8test5_B26funcB2Ev
296// CHECK-LP32-NEXT: .long __ZN8test5_B16funcB1Ev
297// CHECK-LP32-NEXT: .long __ZN7test5_D5funcDEv
Mike Stump4ec04c42009-08-16 02:40:14 +0000298// CHECK-LP32-NEXT: .space 4
299// CHECK-LP32-NEXT: .space 4
300// CHECK-LP32-NEXT: .space 4
301// CHECK-LP32-NEXT: .space 4
Mike Stump15a24e02009-08-28 23:22:54 +0000302// CHECK-LP32-NEXT: .space 4
Mike Stumpbf3fe202009-08-27 01:09:45 +0000303// CHECK-LP32-NEXT: .long 4294967292
Mike Stumpfe3010d2009-08-16 19:04:13 +0000304// CHECK-LP32-NEXT: .long __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000305// CHECK-LP32-NEXT: .long __ZN9test5_B237funcB23Ev
306// CHECK-LP32-NEXT: .long __ZN9test5_B227funcB22Ev
307// CHECK-LP32-NEXT: .long __ZN9test5_B217funcB21Ev
Mike Stumpd76264e2009-08-12 21:50:08 +0000308// CHECK-LP32 .space 4
Mike Stump15a24e02009-08-28 23:22:54 +0000309// CHECK-LP32: .long 8
310// CHECK-LP32 .space 4
311// CHECK-LP32 .space 4 FIXME
Mike Stump276b9f12009-08-16 01:46:26 +0000312// CHECK-LP32: .long 4
Mike Stump4ec04c42009-08-16 02:40:14 +0000313// CHECK-LP32-NEXT: .space 4
314// CHECK-LP32-NEXT: .space 4
Mike Stump9c88d982009-08-19 13:36:31 +0000315// CHECK-LP32-NEXT: .long 4294967288
Mike Stumpfe3010d2009-08-16 19:04:13 +0000316// CHECK-LP32-NEXT: .long __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000317// CHECK-LP32-NEXT: .long __ZN9test5_B337funcB33Ev
318// CHECK-LP32-NEXT: .long __ZN9test5_B327funcB32Ev
319// CHECK-LP32-NEXT: .long __ZN9test5_B317funcB31Ev
320// CHECK-LP32-NEXT: .space 4
321// CHECK-LP32-NEXT: .long 4294967284
322// CHECK-LP32-NEXT: .long __ZTI7test5_D
323// CHECK-LP32-NEXT: .long __ZN4B2328funcB232Ev
324// CHECK-LP32-NEXT: .space 4
Mike Stumpb9837442009-08-20 07:22:17 +0000325// CHECK-LP32-NEXT: .long 4294967280
Mike Stump4ec04c42009-08-16 02:40:14 +0000326// CHECK-LP32-NEXT: .long __ZTI7test5_D
327// CHECK-LP32-NEXT: .long __ZN4B2318funcB231Ev
Mike Stumpd76264e2009-08-12 21:50:08 +0000328
329// CHECK-LP64:__ZTV7test5_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000330// CHECK-LP64-NEXT: .quad 32
331// CHECK-LP64-NEXT: .quad 24
Mike Stumpfe3010d2009-08-16 19:04:13 +0000332// CHECK-LP64-NEXT: .quad 16
333// CHECK-LP64-NEXT: .quad 16
334// CHECK-LP64-NEXT: .quad 16
335// CHECK-LP64-NEXT: .quad 8
336// CHECK-LP64-NEXT: .quad 8
337// CHECK-LP64-NEXT: .quad 8
338// CHECK-LP64-NEXT: .space 8
Mike Stump4ec04c42009-08-16 02:40:14 +0000339// CHECK-LP64-NEXT: .space 8
340// CHECK-LP64-NEXT: .space 8
341// CHECK-LP64-NEXT: .space 8
342// CHECK-LP64-NEXT: .space 8
343// CHECK-LP64-NEXT: .space 8
344// CHECK-LP64-NEXT: .space 8
Mike Stumpb9837442009-08-20 07:22:17 +0000345// CHECK-LP64-NEXT: .quad __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000346// CHECK-LP64-NEXT: .quad __ZN8test5_B36funcB3Ev
347// CHECK-LP64-NEXT: .quad __ZN8test5_B26funcB2Ev
348// CHECK-LP64-NEXT: .quad __ZN8test5_B16funcB1Ev
349// CHECK-LP64-NEXT: .quad __ZN7test5_D5funcDEv
Mike Stump4ec04c42009-08-16 02:40:14 +0000350// CHECK-LP64-NEXT: .space 8
351// CHECK-LP64-NEXT: .space 8
352// CHECK-LP64-NEXT: .space 8
353// CHECK-LP64-NEXT: .space 8
Mike Stump15a24e02009-08-28 23:22:54 +0000354// CHECK-LP64-NEXT: .space 8
Mike Stumpbf3fe202009-08-27 01:09:45 +0000355// CHECK-LP64-NEXT: .quad 18446744073709551608
Mike Stumpfe3010d2009-08-16 19:04:13 +0000356// CHECK-LP64-NEXT: .quad __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000357// CHECK-LP64-NEXT: .quad __ZN9test5_B237funcB23Ev
358// CHECK-LP64-NEXT: .quad __ZN9test5_B227funcB22Ev
359// CHECK-LP64-NEXT: .quad __ZN9test5_B217funcB21Ev
Mike Stumpd76264e2009-08-12 21:50:08 +0000360// CHECK-LP64 .space 8
Mike Stump15a24e02009-08-28 23:22:54 +0000361// CHECK-LP64: .quad 16
362// CHECK-LP64 .space 8
363// CHECK-LP64 .space 8
Mike Stump276b9f12009-08-16 01:46:26 +0000364// CHECK-LP64: .quad 8
Mike Stump4ec04c42009-08-16 02:40:14 +0000365// CHECK-LP64-NEXT: .space 8
366// CHECK-LP64-NEXT: .space 8
Mike Stump15a24e02009-08-28 23:22:54 +0000367// CHECK-LP64: .quad 18446744073709551600
Mike Stumpfe3010d2009-08-16 19:04:13 +0000368// CHECK-LP64-NEXT: .quad __ZTI7test5_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000369// CHECK-LP64-NEXT: .quad __ZN9test5_B337funcB33Ev
370// CHECK-LP64-NEXT: .quad __ZN9test5_B327funcB32Ev
371// CHECK-LP64-NEXT: .quad __ZN9test5_B317funcB31Ev
372// CHECK-LP64-NEXT: .space 8
373// CHECK-LP64-NEXT: .quad 18446744073709551592
374// CHECK-LP64-NEXT: .quad __ZTI7test5_D
375// CHECK-LP64-NEXT: .quad __ZN4B2328funcB232Ev
376// CHECK-LP64-NEXT: .space 8
Mike Stumpb9837442009-08-20 07:22:17 +0000377// CHECK-LP64-NEXT: .quad 18446744073709551584
Mike Stump4ec04c42009-08-16 02:40:14 +0000378// CHECK-LP64-NEXT: .quad __ZTI7test5_D
379// CHECK-LP64-NEXT: .quad __ZN4B2318funcB231Ev
Mike Stumpd76264e2009-08-12 21:50:08 +0000380
Mike Stump276b9f12009-08-16 01:46:26 +0000381struct test8_B1 {
382 virtual void ftest8_B1() { }
383};
384struct test8_B2aa {
385 virtual void ftest8_B2aa() { }
386 int i;
387};
388struct test8_B2ab {
389 virtual void ftest8_B2ab() { }
390 int i;
391};
392struct test8_B2a : virtual test8_B2aa, virtual test8_B2ab {
393 virtual void ftest8_B2a() { }
394};
395struct test8_B2b {
396 virtual void ftest8_B2b() { }
397};
398struct test8_B2 : test8_B2a, test8_B2b {
399 virtual void ftest8_B2() { }
400};
401struct test8_B3 {
402 virtual void ftest8_B3() { }
403};
404class test8_D : test8_B1, test8_B2, test8_B3 {
Mike Stump09765ec2009-08-19 02:53:08 +0000405};
Mike Stump276b9f12009-08-16 01:46:26 +0000406
407// CHECK-LP32:__ZTV7test8_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000408// CHECK-LP32-NEXT: .long 24
409// CHECK-LP32-NEXT: .long 16
410// CHECK-LP32-NEXT: .space 4
Mike Stumpb46c92d2009-08-19 02:06:38 +0000411// CHECK-LP32-NEXT: .long __ZTI7test8_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000412// CHECK-LP32-NEXT: .long __ZN8test8_B19ftest8_B1Ev
413// CHECK-LP32-NEXT: .long 20
414// CHECK-LP32-NEXT: .long 12
Mike Stump7fa0d932009-08-20 02:11:48 +0000415// CHECK-LP32-NEXT: .long 4294967292
Mike Stump4ec04c42009-08-16 02:40:14 +0000416// CHECK-LP32-NEXT: .long __ZTI7test8_D
417// CHECK-LP32-NEXT: .long __ZN9test8_B2a10ftest8_B2aEv
418// CHECK-LP32-NEXT: .long __ZN8test8_B29ftest8_B2Ev
Mike Stumpb46c92d2009-08-19 02:06:38 +0000419// CHECK-LP32-NEXT: .long 4294967288
Mike Stump4ec04c42009-08-16 02:40:14 +0000420// CHECK-LP32-NEXT: .long __ZTI7test8_D
421// CHECK-LP32-NEXT: .long __ZN9test8_B2b10ftest8_B2bEv
Mike Stumpb46c92d2009-08-19 02:06:38 +0000422// CHECK-LP32-NEXT: .long 4294967284
Mike Stump4ec04c42009-08-16 02:40:14 +0000423// CHECK-LP32-NEXT: .long __ZTI7test8_D
424// CHECK-LP32-NEXT: .long __ZN8test8_B39ftest8_B3Ev
425// CHECK-LP32-NEXT: .space 4
426// CHECK-LP32-NEXT: .long 4294967280
427// CHECK-LP32-NEXT: .long __ZTI7test8_D
428// CHECK-LP32-NEXT: .long __ZN10test8_B2aa11ftest8_B2aaEv
429// CHECK-LP32-NEXT: .space 4
430// CHECK-LP32-NEXT: .long 4294967272
431// CHECK-LP32-NEXT: .long __ZTI7test8_D
432// CHECK-LP32-NEXT: .long __ZN10test8_B2ab11ftest8_B2abEv
Mike Stump276b9f12009-08-16 01:46:26 +0000433
434// CHECK-LP64:__ZTV7test8_D:
Mike Stump4ec04c42009-08-16 02:40:14 +0000435// CHECK-LP64-NEXT: .quad 48
436// CHECK-LP64-NEXT: .quad 32
437// CHECK-LP64-NEXT: .space 8
Mike Stumpb46c92d2009-08-19 02:06:38 +0000438// CHECK-LP64-NEXT: .quad __ZTI7test8_D
Mike Stump4ec04c42009-08-16 02:40:14 +0000439// CHECK-LP64-NEXT: .quad __ZN8test8_B19ftest8_B1Ev
440// CHECK-LP64-NEXT: .quad 40
441// CHECK-LP64-NEXT: .quad 24
Mike Stump7fa0d932009-08-20 02:11:48 +0000442// CHECK-LP64-NEXT: .quad 18446744073709551608
Mike Stump4ec04c42009-08-16 02:40:14 +0000443// CHECK-LP64-NEXT: .quad __ZTI7test8_D
444// CHECK-LP64-NEXT: .quad __ZN9test8_B2a10ftest8_B2aEv
445// CHECK-LP64-NEXT: .quad __ZN8test8_B29ftest8_B2Ev
Mike Stumpb46c92d2009-08-19 02:06:38 +0000446// CHECK-LP64-NEXT: .quad 18446744073709551600
Mike Stump4ec04c42009-08-16 02:40:14 +0000447// CHECK-LP64-NEXT: .quad __ZTI7test8_D
448// CHECK-LP64-NEXT: .quad __ZN9test8_B2b10ftest8_B2bEv
Mike Stumpb46c92d2009-08-19 02:06:38 +0000449// CHECK-LP64-NEXT: .quad 18446744073709551592
Mike Stump4ec04c42009-08-16 02:40:14 +0000450// CHECK-LP64-NEXT: .quad __ZTI7test8_D
451// CHECK-LP64-NEXT: .quad __ZN8test8_B39ftest8_B3Ev
452// CHECK-LP64-NEXT: .space 8
453// CHECK-LP64-NEXT: .quad 18446744073709551584
454// CHECK-LP64-NEXT: .quad __ZTI7test8_D
455// CHECK-LP64-NEXT: .quad __ZN10test8_B2aa11ftest8_B2aaEv
456// CHECK-LP64-NEXT: .space 8
457// CHECK-LP64-NEXT: .quad 18446744073709551568
458// CHECK-LP64-NEXT: .quad __ZTI7test8_D
459// CHECK-LP64-NEXT: .quad __ZN10test8_B2ab11ftest8_B2abEv
Mike Stumpd76264e2009-08-12 21:50:08 +0000460
Mike Stump49520942009-08-11 04:03:59 +0000461
Mike Stump09765ec2009-08-19 02:53:08 +0000462struct test9_B3 { virtual void funcB3(); int i; };
463struct test9_B2 : virtual test9_B3 { virtual void funcB2(); int i; };
464struct test9_B1 : virtual test9_B2 { virtual void funcB1(); int i; };
465
466struct test9_B23 { virtual void funcB23(); int i; };
467struct test9_B22 : virtual test9_B23 { virtual void funcB22(); int i; };
468struct test9_B21 : virtual test9_B22 { virtual void funcB21(); int i; };
469
470
471struct test9_B232 { virtual void funcB232(); int i; };
472struct test9_B231 { virtual void funcB231(); int i; };
473
474struct test9_B33 { virtual void funcB33(); int i; };
475struct test9_B32 : virtual test9_B33, virtual test9_B232 { virtual void funcB32(); int i; };
476struct test9_B31 : virtual test9_B32, virtual test9_B231 { virtual void funcB31(); int i; };
477
478struct test9_D : virtual test9_B1, virtual test9_B21, virtual test9_B31 {
479 virtual void funcD() { }
480};
481
482// CHECK-LP64: __ZTV7test9_D:
483// CHECK-LP64-NEXT: .quad 168
484// CHECK-LP64-NEXT: .quad 152
485// CHECK-LP64-NEXT: .quad 136
486// CHECK-LP64-NEXT: .quad 120
487// CHECK-LP64-NEXT: .quad 104
488// CHECK-LP64-NEXT: .quad 88
489// CHECK-LP64-NEXT: .quad 72
490// CHECK-LP64-NEXT: .quad 56
491// CHECK-LP64-NEXT: .quad 40
492// CHECK-LP64-NEXT: .quad 24
493// CHECK-LP64-NEXT: .quad 8
494// CHECK-LP64-NEXT: .space 8
495// CHECK-LP64-NEXT: .quad __ZTI7test9_D
496// CHECK-LP64-NEXT: .quad __ZN7test9_D5funcDEv
497// CHECK-LP64-NEXT: .space 8
498// CHECK-LP64-NEXT: .quad 32
499// CHECK-LP64-NEXT: .quad 16
500// CHECK-LP64-NEXT: .quad 18446744073709551608
501// CHECK-LP64-NEXT: .quad __ZTI7test9_D
502// CHECK-LP64-NEXT: .quad __ZN8test9_B16funcB1Ev
503// CHECK-LP64-NEXT: .space 8
504// CHECK-LP64-NEXT: .quad 16
505// CHECK-LP64-NEXT: .quad 18446744073709551592
506// CHECK-LP64-NEXT: .quad __ZTI7test9_D
507// CHECK-LP64-NEXT: .quad __ZN8test9_B26funcB2Ev
508// CHECK-LP64-NEXT: .space 8
509// CHECK-LP64-NEXT: .quad 18446744073709551576
510// CHECK-LP64-NEXT: .quad __ZTI7test9_D
511// CHECK-LP64-NEXT: .quad __ZN8test9_B36funcB3Ev
512// CHECK-LP64-NEXT: .space 8
513// CHECK-LP64-NEXT: .quad 32
514// CHECK-LP64-NEXT: .quad 16
515// CHECK-LP64-NEXT: .quad 18446744073709551560
516// CHECK-LP64-NEXT: .quad __ZTI7test9_D
517// CHECK-LP64-NEXT: .quad __ZN9test9_B217funcB21Ev
518// CHECK-LP64-NEXT: .space 8
519// CHECK-LP64-NEXT: .quad 16
520// CHECK-LP64-NEXT: .quad 18446744073709551544
521// CHECK-LP64-NEXT: .quad __ZTI7test9_D
522// CHECK-LP64-NEXT: .quad __ZN9test9_B227funcB22Ev
523// CHECK-LP64-NEXT: .space 8
524// CHECK-LP64-NEXT: .quad 18446744073709551528
525// CHECK-LP64-NEXT: .quad __ZTI7test9_D
526// CHECK-LP64-NEXT: .quad __ZN9test9_B237funcB23Ev
527// CHECK-LP64-NEXT: .space 8
528// CHECK-LP64-NEXT: .quad 64
529// CHECK-LP64-NEXT: .quad 48
530// CHECK-LP64-NEXT: .quad 32
531// CHECK-LP64-NEXT: .quad 16
532// CHECK-LP64-NEXT: .quad 18446744073709551512
533// CHECK-LP64-NEXT: .quad __ZTI7test9_D
534// CHECK-LP64-NEXT: .quad __ZN9test9_B317funcB31Ev
535// CHECK-LP64-NEXT: .space 8
536// CHECK-LP64-NEXT: .quad 32
537// CHECK-LP64-NEXT: .quad 16
538// CHECK-LP64-NEXT: .quad 18446744073709551496
539// CHECK-LP64-NEXT: .quad __ZTI7test9_D
540// CHECK-LP64-NEXT: .quad __ZN9test9_B327funcB32Ev
541// CHECK-LP64-NEXT: .space 8
542// CHECK-LP64-NEXT: .quad 18446744073709551480
543// CHECK-LP64-NEXT: .quad __ZTI7test9_D
544// CHECK-LP64-NEXT: .quad __ZN9test9_B337funcB33Ev
545// CHECK-LP64-NEXT: .space 8
546// CHECK-LP64-NEXT: .quad 18446744073709551464
547// CHECK-LP64-NEXT: .quad __ZTI7test9_D
548// CHECK-LP64-NEXT: .quad __ZN10test9_B2328funcB232Ev
549// CHECK-LP64-NEXT: .space 8
550// CHECK-LP64-NEXT: .quad 18446744073709551448
551// CHECK-LP64-NEXT: .quad __ZTI7test9_D
552// CHECK-LP64-NEXT: .quad __ZN10test9_B2318funcB231Ev
553
554// CHECK-LP32: __ZTV7test9_D:
555// CHECK-LP32-NEXT: .long 84
556// CHECK-LP32-NEXT: .long 76
557// CHECK-LP32-NEXT: .long 68
558// CHECK-LP32-NEXT: .long 60
559// CHECK-LP32-NEXT: .long 52
560// CHECK-LP32-NEXT: .long 44
561// CHECK-LP32-NEXT: .long 36
562// CHECK-LP32-NEXT: .long 28
563// CHECK-LP32-NEXT: .long 20
564// CHECK-LP32-NEXT: .long 12
565// CHECK-LP32-NEXT: .long 4
566// CHECK-LP32-NEXT: .space 4
567// CHECK-LP32-NEXT: .long __ZTI7test9_D
568// CHECK-LP32-NEXT: .long __ZN7test9_D5funcDEv
569// CHECK-LP32-NEXT: .space 4
570// CHECK-LP32-NEXT: .long 16
571// CHECK-LP32-NEXT: .long 8
572// CHECK-LP32-NEXT: .long 4294967292
573// CHECK-LP32-NEXT: .long __ZTI7test9_D
574// CHECK-LP32-NEXT: .long __ZN8test9_B16funcB1Ev
575// CHECK-LP32-NEXT: .space 4
576// CHECK-LP32-NEXT: .long 8
577// CHECK-LP32-NEXT: .long 4294967284
578// CHECK-LP32-NEXT: .long __ZTI7test9_D
579// CHECK-LP32-NEXT: .long __ZN8test9_B26funcB2Ev
580// CHECK-LP32-NEXT: .space 4
581// CHECK-LP32-NEXT: .long 4294967276
582// CHECK-LP32-NEXT: .long __ZTI7test9_D
583// CHECK-LP32-NEXT: .long __ZN8test9_B36funcB3Ev
584// CHECK-LP32-NEXT: .space 4
585// CHECK-LP32-NEXT: .long 16
586// CHECK-LP32-NEXT: .long 8
587// CHECK-LP32-NEXT: .long 4294967268
588// CHECK-LP32-NEXT: .long __ZTI7test9_D
589// CHECK-LP32-NEXT: .long __ZN9test9_B217funcB21Ev
590// CHECK-LP32-NEXT: .space 4
591// CHECK-LP32-NEXT: .long 8
592// CHECK-LP32-NEXT: .long 4294967260
593// CHECK-LP32-NEXT: .long __ZTI7test9_D
594// CHECK-LP32-NEXT: .long __ZN9test9_B227funcB22Ev
595// CHECK-LP32-NEXT: .space 4
596// CHECK-LP32-NEXT: .long 4294967252
597// CHECK-LP32-NEXT: .long __ZTI7test9_D
598// CHECK-LP32-NEXT: .long __ZN9test9_B237funcB23Ev
599// CHECK-LP32-NEXT: .space 4
600// CHECK-LP32-NEXT: .long 32
601// CHECK-LP32-NEXT: .long 24
602// CHECK-LP32-NEXT: .long 16
603// CHECK-LP32-NEXT: .long 8
604// CHECK-LP32-NEXT: .long 4294967244
605// CHECK-LP32-NEXT: .long __ZTI7test9_D
606// CHECK-LP32-NEXT: .long __ZN9test9_B317funcB31Ev
607// CHECK-LP32-NEXT: .space 4
608// CHECK-LP32-NEXT: .long 16
609// CHECK-LP32-NEXT: .long 8
610// CHECK-LP32-NEXT: .long 4294967236
611// CHECK-LP32-NEXT: .long __ZTI7test9_D
612// CHECK-LP32-NEXT: .long __ZN9test9_B327funcB32Ev
613// CHECK-LP32-NEXT: .space 4
614// CHECK-LP32-NEXT: .long 4294967228
615// CHECK-LP32-NEXT: .long __ZTI7test9_D
616// CHECK-LP32-NEXT: .long __ZN9test9_B337funcB33Ev
617// CHECK-LP32-NEXT: .space 4
618// CHECK-LP32-NEXT: .long 4294967220
619// CHECK-LP32-NEXT: .long __ZTI7test9_D
620// CHECK-LP32-NEXT: .long __ZN10test9_B2328funcB232Ev
621// CHECK-LP32-NEXT: .space 4
622// CHECK-LP32-NEXT: .long 4294967212
623// CHECK-LP32-NEXT: .long __ZTI7test9_D
624// CHECK-LP32-NEXT: .long __ZN10test9_B2318funcB231Ev
625
Mike Stumpb9837442009-08-20 07:22:17 +0000626struct test10_O { int i; };
627
628struct test10_B1 : virtual test10_O {
629 virtual void ftest10_B1() { }
630};
631
632struct test10_B2aa : virtual test10_O {
633 int i;
634};
635struct test10_B2ab : virtual test10_O {
636 int i;
637};
638struct test10_B2a : virtual test10_B2aa, virtual test10_B2ab,virtual test10_O {
639 virtual void ftest10_B2a() { }
640};
641struct test10_B2b : virtual test10_O {
642 virtual void ftest10_B2b() { }
643};
644struct test10_B2 : test10_B2a {
645 virtual void ftest10_B2() { }
646};
647class test10_D : test10_B1, test10_B2 {
648
649 void ftest10_B2aa() { }
650};
651
652// CHECK-LP64:__ZTV8test10_D:
653// CHECK-LP64-NEXT: .quad 40
654// CHECK-LP64-NEXT: .quad 24
655// CHECK-LP64-NEXT: .quad 16
656// CHECK-LP64-NEXT: .space 8
657// CHECK-LP64-NEXT: .quad __ZTI8test10_D
658// CHECK-LP64-NEXT: .quad __ZN9test10_B110ftest10_B1Ev
659// CHECK-LP64-NEXT: .quad 32
660// CHECK-LP64-NEXT: .quad 8
661// CHECK-LP64-NEXT: .quad 16
662// CHECK-LP64-NEXT: .quad 18446744073709551608
663// CHECK-LP64-NEXT: .quad __ZTI8test10_D
664// CHECK-LP64-NEXT: .quad __ZN10test10_B2a11ftest10_B2aEv
665// CHECK-LP64-NEXT: .quad __ZN9test10_B210ftest10_B2Ev
666// CHECK-LP64-NEXT: .quad 18446744073709551608
667// CHECK-LP64-NEXT: .quad 18446744073709551592
668// CHECK-LP64-NEXT: .quad __ZTI8test10_D
669// CHECK-LP64-NEXT: .quad 18446744073709551592
670// CHECK-LP64-NEXT: .quad 18446744073709551576
671// CHECK-LP64-NEXT: .quad __ZTI8test10_D
672
673// CHECK-LP32: __ZTV8test10_D:
674// CHECK-LP32-NEXT: .long 20
675// CHECK-LP32-NEXT: .long 12
676// CHECK-LP32-NEXT: .long 8
677// CHECK-LP32-NEXT: .space 4
678// CHECK-LP32-NEXT: .long __ZTI8test10_D
679// CHECK-LP32-NEXT: .long __ZN9test10_B110ftest10_B1Ev
680// CHECK-LP32-NEXT: .long 16
681// CHECK-LP32-NEXT: .long 4
682// CHECK-LP32-NEXT: .long 8
683// CHECK-LP32-NEXT: .long 4294967292
684// CHECK-LP32-NEXT: .long __ZTI8test10_D
685// CHECK-LP32-NEXT: .long __ZN10test10_B2a11ftest10_B2aEv
686// CHECK-LP32-NEXT: .long __ZN9test10_B210ftest10_B2Ev
687// CHECK-LP32-NEXT: .long 4294967292
688// CHECK-LP32-NEXT: .long 4294967284
689// CHECK-LP32-NEXT: .long __ZTI8test10_D
690// CHECK-LP32-NEXT: .long 4294967284
691// CHECK-LP32-NEXT: .long 4294967276
692// CHECK-LP32-NEXT: .long __ZTI8test10_D
693
Mike Stumpb9871a22009-08-21 01:45:00 +0000694struct test11_B {
695 virtual void B1() { }
696 virtual void D() { }
697 virtual void B2() { }
698};
699
700struct test11_D : test11_B {
701 virtual void D1() { }
702 virtual void D() { }
703 virtual void D2() { }
704};
705
706// CHECK-LP32:__ZTV8test11_D:
707// CHECK-LP32-NEXT: .space 4
708// CHECK-LP32-NEXT: .long __ZTI8test11_D
709// CHECK-LP32-NEXT: .long __ZN8test11_B2B1Ev
710// CHECK-LP32-NEXT: .long __ZN8test11_D1DEv
711// CHECK-LP32-NEXT: .long __ZN8test11_B2B2Ev
712// CHECK-LP32-NEXT: .long __ZN8test11_D2D1Ev
713// CHECK-LP32-NEXT: .long __ZN8test11_D2D2Ev
714
715
716// CHECK-LP64:__ZTV8test11_D:
717// CHECK-LP64-NEXT: .space 8
718// CHECK-LP64-NEXT: .quad __ZTI8test11_D
719// CHECK-LP64-NEXT: .quad __ZN8test11_B2B1Ev
720// CHECK-LP64-NEXT: .quad __ZN8test11_D1DEv
721// CHECK-LP64-NEXT: .quad __ZN8test11_B2B2Ev
722// CHECK-LP64-NEXT: .quad __ZN8test11_D2D1Ev
723// CHECK-LP64-NEXT: .quad __ZN8test11_D2D2Ev
Mike Stumpb9837442009-08-20 07:22:17 +0000724
Mike Stump09765ec2009-08-19 02:53:08 +0000725
Mike Stump26899b02009-08-05 22:48:36 +0000726// CHECK-LP64: __ZTV1B:
Mike Stumpb46c92d2009-08-19 02:06:38 +0000727// CHECK-LP64-NEXT: .space 8
728// CHECK-LP64-NEXT: .quad __ZTI1B
Mike Stump4ec04c42009-08-16 02:40:14 +0000729// CHECK-LP64-NEXT: .quad __ZN1B4bar1Ev
730// CHECK-LP64-NEXT: .quad __ZN1B4bar2Ev
Mike Stump26899b02009-08-05 22:48:36 +0000731
732// CHECK-LP32: __ZTV1B:
Mike Stumpb46c92d2009-08-19 02:06:38 +0000733// CHECK-LP32-NEXT: .space 4
734// CHECK-LP32-NEXT: .long __ZTI1B
Mike Stump4ec04c42009-08-16 02:40:14 +0000735// CHECK-LP32-NEXT: .long __ZN1B4bar1Ev
736// CHECK-LP32-NEXT: .long __ZN1B4bar2Ev
Mike Stump26899b02009-08-05 22:48:36 +0000737
Mike Stump06758d02009-08-04 20:37:29 +0000738// CHECK-LP64: __ZTV1A:
Mike Stump4ec04c42009-08-16 02:40:14 +0000739// CHECK-LP64-NEXT: .space 8
Mike Stumpb46c92d2009-08-19 02:06:38 +0000740// CHECK-LP64-NEXT: .quad __ZTI1A
Mike Stump4ec04c42009-08-16 02:40:14 +0000741// CHECK-LP64-NEXT: .quad __ZN1B4bar1Ev
742// CHECK-LP64-NEXT: .quad __ZN1B4bar2Ev
743// CHECK-LP64-NEXT: .quad __ZN1A4foo1Ev
744// CHECK-LP64-NEXT: .quad __ZN1A4foo2Ev
Mike Stumpb46c92d2009-08-19 02:06:38 +0000745// CHECK-LP64-NEXT: .quad 18446744073709551600
Mike Stump4ec04c42009-08-16 02:40:14 +0000746// CHECK-LP64-NEXT: .quad __ZTI1A
747// CHECK-LP64-NEXT: .quad __ZN1C4bee1Ev
748// CHECK-LP64-NEXT: .quad __ZN1C4bee2Ev
Mike Stump06758d02009-08-04 20:37:29 +0000749
750// CHECK-LP32: __ZTV1A:
Mike Stump4ec04c42009-08-16 02:40:14 +0000751// CHECK-LP32-NEXT: .space 4
Mike Stumpb46c92d2009-08-19 02:06:38 +0000752// CHECK-LP32-NEXT: .long __ZTI1A
Mike Stump4ec04c42009-08-16 02:40:14 +0000753// CHECK-LP32-NEXT: .long __ZN1B4bar1Ev
754// CHECK-LP32-NEXT: .long __ZN1B4bar2Ev
755// CHECK-LP32-NEXT: .long __ZN1A4foo1Ev
756// CHECK-LP32-NEXT: .long __ZN1A4foo2Ev
Mike Stumpb46c92d2009-08-19 02:06:38 +0000757// CHECK-LP32-NEXT: .long 4294967284
Mike Stump4ec04c42009-08-16 02:40:14 +0000758// CHECK-LP32-NEXT: .long __ZTI1A
759// CHECK-LP32-NEXT: .long __ZN1C4bee1Ev
760// CHECK-LP32-NEXT: .long __ZN1C4bee2Ev
Mike Stump8a12b562009-08-06 15:50:11 +0000761
Mike Stump928f1502009-08-07 19:00:50 +0000762// CHECK-LP32:__ZTV1F:
Mike Stump4ec04c42009-08-16 02:40:14 +0000763// CHECK-LP32-NEXT: .space 4
764// CHECK-LP32-NEXT: .long 8
765// CHECK-LP32-NEXT: .space 4
766// CHECK-LP32-NEXT: .space 4
Mike Stumpb46c92d2009-08-19 02:06:38 +0000767// CHECK-LP32-NEXT: .long __ZTI1F
Mike Stump4ec04c42009-08-16 02:40:14 +0000768// CHECK-LP32-NEXT: .long __ZN1D3booEv
769// CHECK-LP32-NEXT: .long __ZN1F3fooEv
770// CHECK-LP32-NEXT: .space 4
771// CHECK-LP32-NEXT: .space 4
772// CHECK-LP32-NEXT: .space 4
773// CHECK-LP32-NEXT: .space 4
774// CHECK-LP32-NEXT: .space 4
775// CHECK-LP32-NEXT: .long 4294967288
776// CHECK-LP32-NEXT: .long __ZTI1F
777// CHECK-LP32-NEXT: .long __ZN2D13barEv
778// CHECK-LP32-NEXT: .long __ZN2D14bar2Ev
779// CHECK-LP32-NEXT: .long __ZN2D14bar3Ev
780// CHECK-LP32-NEXT: .long __ZN2D14bar4Ev
781// CHECK-LP32-NEXT: .long __ZN2D14bar5Ev
Mike Stump8a12b562009-08-06 15:50:11 +0000782
783// CHECK-LP64: __ZTV1F:
Mike Stump4ec04c42009-08-16 02:40:14 +0000784// CHECK-LP64-NEXT: .space 8
785// CHECK-LP64-NEXT: .quad 16
786// CHECK-LP64-NEXT: .space 8
787// CHECK-LP64-NEXT: .space 8
Mike Stumpb46c92d2009-08-19 02:06:38 +0000788// CHECK-LP64-NEXT: .quad __ZTI1F
Mike Stump4ec04c42009-08-16 02:40:14 +0000789// CHECK-LP64-NEXT: .quad __ZN1D3booEv
790// CHECK-LP64-NEXT: .quad __ZN1F3fooEv
791// CHECK-LP64-NEXT: .space 8
792// CHECK-LP64-NEXT: .space 8
793// CHECK-LP64-NEXT: .space 8
794// CHECK-LP64-NEXT: .space 8
795// CHECK-LP64-NEXT: .space 8
796// CHECK-LP64-NEXT: .quad 18446744073709551600
797// CHECK-LP64-NEXT: .quad __ZTI1F
798// CHECK-LP64-NEXT: .quad __ZN2D13barEv
799// CHECK-LP64-NEXT: .quad __ZN2D14bar2Ev
800// CHECK-LP64-NEXT: .quad __ZN2D14bar3Ev
801// CHECK-LP64-NEXT: .quad __ZN2D14bar4Ev
802// CHECK-LP64-NEXT: .quad __ZN2D14bar5Ev
Mike Stump49520942009-08-11 04:03:59 +0000803
804
Mike Stumpb9871a22009-08-21 01:45:00 +0000805test11_D d11;
Mike Stumpb9837442009-08-20 07:22:17 +0000806test10_D d10;
Mike Stump09765ec2009-08-19 02:53:08 +0000807test9_D d9;
808test8_D d8;
809
Mike Stumpd76264e2009-08-12 21:50:08 +0000810test5_D d5;
Mike Stump34fae9c2009-08-12 18:50:26 +0000811test4_D d4;
812test3_D d3;
Mike Stump78846782009-08-13 23:33:29 +0000813
814test6_D d6;
815test7_D d7;