Be sure to set visibility for ZTI symbols for classes from the class.

llvm-svn: 89186
This commit is contained in:
Mike Stump 2009-11-18 03:21:29 +00:00
parent f77aaa0089
commit c5d2ed73ff
2 changed files with 14 additions and 6 deletions

View File

@ -145,7 +145,7 @@ public:
llvm::Constant *finish(std::vector<llvm::Constant *> &info,
llvm::GlobalVariable *GV,
llvm::StringRef Name) {
llvm::StringRef Name, bool Extern) {
llvm::GlobalVariable::LinkageTypes linktype;
linktype = llvm::GlobalValue::LinkOnceODRLinkage;
@ -165,6 +165,7 @@ public:
OGV->replaceAllUsesWith(NewPtr);
OGV->eraseFromParent();
}
if (!Extern)
GV->setVisibility(llvm::GlobalVariable::HiddenVisibility);
return llvm::ConstantExpr::getBitCast(GV, Int8PtrTy);
}
@ -230,7 +231,9 @@ public:
}
}
return finish(info, GV, Out.str());
bool Extern = CGM.getDeclVisibilityMode(RD) != LangOptions::Hidden;
return finish(info, GV, Out.str(), Extern);
}
/// - BuildFlags - Build a __flags value for __pbase_type_info.
@ -291,7 +294,7 @@ public:
if (PtrMem)
info.push_back(BuildType2(BTy));
return finish(info, GV, Out.str());
return finish(info, GV, Out.str(), false);
}
llvm::Constant *BuildSimpleType(QualType Ty, const char *vtbl) {
@ -312,7 +315,7 @@ public:
info.push_back(C);
info.push_back(BuildName(Ty));
return finish(info, GV, Out.str());
return finish(info, GV, Out.str(), false);
}
llvm::Constant *BuildType(QualType Ty) {

View File

@ -41,6 +41,11 @@ class test1_D : public test1_B7 {
// CHECK-NEXT: .space 4
// CHECK-NEXT: .quad __ZTIi
// CHECK: .globl __ZTS7test3_A
// CHECK-NEXT: .weak_definition __ZTS7test3_A
// CHECK: __ZTS7test3_A:
// CHECK-NEXT: .asciz "7test3_A"
// CHECK: __ZTIM7test3_Ai:
// CHECK-NEXT: .quad (__ZTVN10__cxxabiv129__pointer_to_member_type_infoE) + 16
// CHECK-NEXT: .quad __ZTSM7test3_Ai