summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2011-02-06 20:16:20 +0000
committerAnders Carlsson <andersca@mac.com>2011-02-06 20:16:20 +0000
commit43760c3d421909d3d060e2ec067531a8b3c3eb93 (patch)
tree26d82c163c1ed49fc4e85f14e3d39050c8609c49
parentd21b06a0db5f48ec96ad5c6072e4c70ad4b9beca (diff)
downloadbcm5719-llvm-43760c3d421909d3d060e2ec067531a8b3c3eb93.tar.gz
bcm5719-llvm-43760c3d421909d3d060e2ec067531a8b3c3eb93.zip
Add another test that we can fully devirtualize now.
llvm-svn: 124988
-rw-r--r--clang/test/CodeGenCXX/vtable-available-externally.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/vtable-available-externally.cpp b/clang/test/CodeGenCXX/vtable-available-externally.cpp
index f56e3d147f9..23baac968c7 100644
--- a/clang/test/CodeGenCXX/vtable-available-externally.cpp
+++ b/clang/test/CodeGenCXX/vtable-available-externally.cpp
@@ -2,6 +2,7 @@
// RUN: FileCheck --check-prefix=CHECK-TEST1 %s < %t
// RUN: FileCheck --check-prefix=CHECK-TEST2 %s < %t
// RUN: FileCheck --check-prefix=CHECK-TEST5 %s < %t
+// RUN: FileCheck --check-prefix=CHECK-TEST7 %s < %t
#include <typeinfo>
@@ -144,3 +145,27 @@ struct D : C {
D::D() { }
}
+
+namespace Test7 {
+
+struct c1 {};
+struct c10 : c1{
+ virtual void foo ();
+};
+struct c11 : c10, c1{
+ virtual void f6 ();
+};
+struct c28 : virtual c11{
+ void f6 ();
+};
+
+// CHECK-TEST7: define void @_ZN5Test79check_c28Ev
+// CHECK-TEST7: call void @_ZN5Test73c282f6Ev
+// CHECK-TEST7: ret void
+void check_c28 () {
+ c28 obj;
+ c11 *ptr = &obj;
+ ptr->f6 ();
+}
+
+}
OpenPOWER on IntegriCloud