diff options
| author | Anders Carlsson <andersca@mac.com> | 2011-01-29 19:34:19 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2011-01-29 19:34:19 +0000 |
| commit | 5963024ff6e93555e0f0f1b1565c52ca72960a64 (patch) | |
| tree | ea54a324da733041b76154fb9fe1143132204901 | |
| parent | 883fc72c3c8273e61d92f43e7b6d9cc6bc7244c7 (diff) | |
| download | bcm5719-llvm-5963024ff6e93555e0f0f1b1565c52ca72960a64.tar.gz bcm5719-llvm-5963024ff6e93555e0f0f1b1565c52ca72960a64.zip | |
Give VTTs the right visibility.
llvm-svn: 124540
| -rw-r--r-- | clang/lib/CodeGen/CGVTT.cpp | 3 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/vtable-linkage.cpp | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGVTT.cpp b/clang/lib/CodeGen/CGVTT.cpp index 5ebe92b5394..fd8f576a044 100644 --- a/clang/lib/CodeGen/CGVTT.cpp +++ b/clang/lib/CodeGen/CGVTT.cpp @@ -384,6 +384,9 @@ CodeGenVTables::EmitVTTDefinition(llvm::GlobalVariable *VTT, // Set the correct linkage. VTT->setLinkage(Linkage); + + // Set the right visibility. + CGM.setTypeVisibility(VTT, RD, /*ForRTTI=*/false); } llvm::GlobalVariable *CodeGenVTables::GetAddrOfVTT(const CXXRecordDecl *RD) { diff --git a/clang/test/CodeGenCXX/vtable-linkage.cpp b/clang/test/CodeGenCXX/vtable-linkage.cpp index 93ff165114f..fc14c71a0e4 100644 --- a/clang/test/CodeGenCXX/vtable-linkage.cpp +++ b/clang/test/CodeGenCXX/vtable-linkage.cpp @@ -32,7 +32,7 @@ struct B { B::B() { } -struct C { +struct C : virtual B { C(); virtual void f() { } }; @@ -106,9 +106,11 @@ void use_F() { // CHECK-2: @_ZTV1C = linkonce_odr unnamed_addr constant // CHECK-2: @_ZTS1C = linkonce_odr constant // CHECK-2: @_ZTI1C = linkonce_odr unnamed_addr constant +// CHECK-2: @_ZTT1C = linkonce_odr unnamed_addr constant // CHECK-2-HIDDEN: @_ZTV1C = linkonce_odr hidden unnamed_addr constant // CHECK-2-HIDDEN: @_ZTS1C = linkonce_odr constant // CHECK-2-HIDDEN: @_ZTI1C = linkonce_odr hidden unnamed_addr constant +// CHECK-2-HIDDEN: @_ZTT1C = linkonce_odr hidden unnamed_addr constant // D has a key function that is defined in this translation unit so its vtable is // defined in the translation unit. |

