diff options
| author | Anders Carlsson <andersca@mac.com> | 2011-02-06 20:16:20 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2011-02-06 20:16:20 +0000 |
| commit | 43760c3d421909d3d060e2ec067531a8b3c3eb93 (patch) | |
| tree | 26d82c163c1ed49fc4e85f14e3d39050c8609c49 | |
| parent | d21b06a0db5f48ec96ad5c6072e4c70ad4b9beca (diff) | |
| download | bcm5719-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.cpp | 25 |
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 (); +} + +} |

