diff options
| author | Mike Stump <mrs@apple.com> | 2009-08-05 22:37:18 +0000 |
|---|---|---|
| committer | Mike Stump <mrs@apple.com> | 2009-08-05 22:37:18 +0000 |
| commit | d8fe7b2792b14a61749658d35e924c0811d395a9 (patch) | |
| tree | 6f2df4bc386869d040bd2fb9a00f3b825001aaaa /clang/test | |
| parent | dc3416b7b3ad92fb788def0da53f812c648f7591 (diff) | |
| download | bcm5719-llvm-d8fe7b2792b14a61749658d35e924c0811d395a9.tar.gz bcm5719-llvm-d8fe7b2792b14a61749658d35e924c0811d395a9.zip | |
Calculate the primary base class better and use that when laying down
the vtable. Still a work in progress.
llvm-svn: 78252
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CodeGenCXX/virt.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/clang/test/CodeGenCXX/virt.cpp b/clang/test/CodeGenCXX/virt.cpp index e77abaa6f56..7a43026f825 100644 --- a/clang/test/CodeGenCXX/virt.cpp +++ b/clang/test/CodeGenCXX/virt.cpp @@ -8,15 +8,26 @@ struct B { virtual void bar1(); virtual void bar2(); }; +void B::bar1() { } +void B::bar2() { } + +struct C { + virtual void bee1(); + virtual void bee2(); +}; +void C::bee1() { } +void C::bee2() { } static_assert (sizeof (B) == (sizeof(void *)), "vtable pointer layout"); -class A : public B { +class A : public B, public C { public: virtual void foo1(); virtual void foo2(); A() { } } *a; +void A::foo1() { } +void A::foo2() { } int main() { A a; @@ -29,6 +40,10 @@ int main() { // CHECK-LP64: .quad __ZN1B4bar2Ev // CHECK-LP64: .quad __ZN1A4foo1Ev // CHECK-LP64: .quad __ZN1A4foo2Ev +// CHECK-LP64: .quad 18446744073709551608 +// CHECK-LP64: .space 8 +// CHECK-LP64: .quad __ZN1C4bee1Ev +// CHECK-LP64: .quad __ZN1C4bee2Ev // CHECK-LP32: __ZTV1A: // CHECK-LP32: .space 4 @@ -37,3 +52,7 @@ int main() { // CHECK-LP32: .long __ZN1B4bar2Ev // CHECK-LP32: .long __ZN1A4foo1Ev // CHECK-LP32: .long __ZN1A4foo2Ev +// CHECK-LP32: .long 4294967292 +// CHECK-LP32: .space 4 +// CHECK-LP32: .long __ZN1C4bee1Ev +// CHECK-LP32: .long __ZN1C4bee2Ev |

