summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2011-01-29 19:34:19 +0000
committerAnders Carlsson <andersca@mac.com>2011-01-29 19:34:19 +0000
commit5963024ff6e93555e0f0f1b1565c52ca72960a64 (patch)
treeea54a324da733041b76154fb9fe1143132204901
parent883fc72c3c8273e61d92f43e7b6d9cc6bc7244c7 (diff)
downloadbcm5719-llvm-5963024ff6e93555e0f0f1b1565c52ca72960a64.tar.gz
bcm5719-llvm-5963024ff6e93555e0f0f1b1565c52ca72960a64.zip
Give VTTs the right visibility.
llvm-svn: 124540
-rw-r--r--clang/lib/CodeGen/CGVTT.cpp3
-rw-r--r--clang/test/CodeGenCXX/vtable-linkage.cpp4
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.
OpenPOWER on IntegriCloud