]> granicus.if.org Git - clang/commitdiff
Give VTTs the right visibility.
authorAnders Carlsson <andersca@mac.com>
Sat, 29 Jan 2011 19:34:19 +0000 (19:34 +0000)
committerAnders Carlsson <andersca@mac.com>
Sat, 29 Jan 2011 19:34:19 +0000 (19:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124540 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGVTT.cpp
test/CodeGenCXX/vtable-linkage.cpp

index 5ebe92b5394aba8bc8c73380c49ea4c3824aa6bc..fd8f576a0441dfcccb4bb7e01b47a452b0622716 100644 (file)
@@ -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) {
index 93ff165114f39af1d08b567b3f7653d827185722..fc14c71a0e48f81c48bfad4e8219b059f5574a21 100644 (file)
@@ -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.