blob: dd9109e15894a9925e41a540e512a12143d52cdc [file] [log] [blame]
Anders Carlsson824d7ea2010-02-11 08:02:13 +00001// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin10 -emit-llvm-only -fdump-vtable-layouts 2>&1 | FileCheck %s
2namespace Test1 {
3
4// CHECK: Vtable for 'Test1::A' (3 entries).
5// CHECK-NEXT: 0 | offset_to_top (0)
6// CHECK-NEXT: 1 | Test1::A RTTI
Anders Carlsson822307b2010-02-11 17:18:51 +00007// CHECK-NEXT: -- (Test1::A, 0) vtable address --
Anders Carlsson848fa642010-02-11 18:20:28 +00008// CHECK-NEXT: 2 | void Test1::A::f()
Anders Carlsson824d7ea2010-02-11 08:02:13 +00009struct A {
10 virtual void f();
11};
12
13void A::f() { }
Anders Carlsson824d7ea2010-02-11 08:02:13 +000014}
15
Anders Carlsson848fa642010-02-11 18:20:28 +000016namespace Test2 {
17
18// This is a smoke test of the vtable dumper.
19// CHECK: Vtable for 'Test2::A' (8 entries).
20// CHECK-NEXT: 0 | offset_to_top (0)
21// CHECK-NEXT: 1 | Test2::A RTTI
22// CHECK-NEXT: -- (Test2::A, 0) vtable address --
23// CHECK-NEXT: 2 | void Test2::A::f()
24// CHECK-NEXT: 3 | void Test2::A::f() const
25// CHECK-NEXT: 4 | Test2::A *Test2::A::g(int)
26// CHECK-NEXT: 5 | Test2::A::~A() [complete]
27// CHECK-NEXT: 6 | Test2::A::~A() [deleting]
28// CHECK-NEXT: 7 | void Test2::A::h()
29struct A {
30 virtual void f();
31 virtual void f() const;
32
33 virtual A* g(int a);
34 virtual ~A();
35 virtual void h();
36};
37
38void A::f() { }
39
40}