summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2009-08-05 22:37:18 +0000
committerMike Stump <mrs@apple.com>2009-08-05 22:37:18 +0000
commitd8fe7b2792b14a61749658d35e924c0811d395a9 (patch)
tree6f2df4bc386869d040bd2fb9a00f3b825001aaaa /clang/test
parentdc3416b7b3ad92fb788def0da53f812c648f7591 (diff)
downloadbcm5719-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.cpp21
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
OpenPOWER on IntegriCloud