blob: 7a43026f825da75c50a3b3fbcdc8bf1f69dd74b7 [file] [log] [blame]
Mike Stump06758d02009-08-04 20:37:29 +00001// RUN: clang-cc -triple x86_64-apple-darwin -frtti=0 -std=c++0x -S %s -o %t-64.s &&
2// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s &&
3// RUN: clang-cc -triple i386-apple-darwin -frtti=0 -std=c++0x -S %s -o %t-32.s &&
4// RUN: FileCheck -check-prefix LP32 -input-file=%t-32.s %s &&
5// RUN: true
Mike Stump3dee6ef2009-07-30 00:22:38 +00006
Mike Stump104ffaa2009-08-04 21:58:42 +00007struct B {
8 virtual void bar1();
9 virtual void bar2();
10};
Mike Stump6f376332009-08-05 22:37:18 +000011void B::bar1() { }
12void B::bar2() { }
13
14struct C {
15 virtual void bee1();
16 virtual void bee2();
17};
18void C::bee1() { }
19void C::bee2() { }
Mike Stump104ffaa2009-08-04 21:58:42 +000020
21static_assert (sizeof (B) == (sizeof(void *)), "vtable pointer layout");
22
Mike Stump6f376332009-08-05 22:37:18 +000023class A : public B, public C {
Mike Stump3dee6ef2009-07-30 00:22:38 +000024public:
Mike Stump06758d02009-08-04 20:37:29 +000025 virtual void foo1();
26 virtual void foo2();
27 A() { }
28} *a;
Mike Stump6f376332009-08-05 22:37:18 +000029void A::foo1() { }
30void A::foo2() { }
Mike Stump3dee6ef2009-07-30 00:22:38 +000031
Mike Stump06758d02009-08-04 20:37:29 +000032int main() {
33 A a;
34}
35
36// CHECK-LP64: __ZTV1A:
37// CHECK-LP64: .space 8
38// CHECK-LP64: .space 8
Mike Stump104ffaa2009-08-04 21:58:42 +000039// CHECK-LP64: .quad __ZN1B4bar1Ev
40// CHECK-LP64: .quad __ZN1B4bar2Ev
Mike Stump06758d02009-08-04 20:37:29 +000041// CHECK-LP64: .quad __ZN1A4foo1Ev
42// CHECK-LP64: .quad __ZN1A4foo2Ev
Mike Stump6f376332009-08-05 22:37:18 +000043// CHECK-LP64: .quad 18446744073709551608
44// CHECK-LP64: .space 8
45// CHECK-LP64: .quad __ZN1C4bee1Ev
46// CHECK-LP64: .quad __ZN1C4bee2Ev
Mike Stump06758d02009-08-04 20:37:29 +000047
48// CHECK-LP32: __ZTV1A:
49// CHECK-LP32: .space 4
50// CHECK-LP32: .space 4
Mike Stump104ffaa2009-08-04 21:58:42 +000051// CHECK-LP32: .long __ZN1B4bar1Ev
52// CHECK-LP32: .long __ZN1B4bar2Ev
Mike Stump06758d02009-08-04 20:37:29 +000053// CHECK-LP32: .long __ZN1A4foo1Ev
54// CHECK-LP32: .long __ZN1A4foo2Ev
Mike Stump6f376332009-08-05 22:37:18 +000055// CHECK-LP32: .long 4294967292
56// CHECK-LP32: .space 4
57// CHECK-LP32: .long __ZN1C4bee1Ev
58// CHECK-LP32: .long __ZN1C4bee2Ev