blob: e77abaa6f565819471fb899d92f24d6d4fe36929 [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};
11
12static_assert (sizeof (B) == (sizeof(void *)), "vtable pointer layout");
13
14class A : public B {
Mike Stump3dee6ef2009-07-30 00:22:38 +000015public:
Mike Stump06758d02009-08-04 20:37:29 +000016 virtual void foo1();
17 virtual void foo2();
18 A() { }
19} *a;
Mike Stump3dee6ef2009-07-30 00:22:38 +000020
Mike Stump06758d02009-08-04 20:37:29 +000021int main() {
22 A a;
23}
24
25// CHECK-LP64: __ZTV1A:
26// CHECK-LP64: .space 8
27// CHECK-LP64: .space 8
Mike Stump104ffaa2009-08-04 21:58:42 +000028// CHECK-LP64: .quad __ZN1B4bar1Ev
29// CHECK-LP64: .quad __ZN1B4bar2Ev
Mike Stump06758d02009-08-04 20:37:29 +000030// CHECK-LP64: .quad __ZN1A4foo1Ev
31// CHECK-LP64: .quad __ZN1A4foo2Ev
32
33// CHECK-LP32: __ZTV1A:
34// CHECK-LP32: .space 4
35// CHECK-LP32: .space 4
Mike Stump104ffaa2009-08-04 21:58:42 +000036// CHECK-LP32: .long __ZN1B4bar1Ev
37// CHECK-LP32: .long __ZN1B4bar2Ev
Mike Stump06758d02009-08-04 20:37:29 +000038// CHECK-LP32: .long __ZN1A4foo1Ev
39// CHECK-LP32: .long __ZN1A4foo2Ev