diff options
author | Mike Stump <mrs@apple.com> | 2009-11-18 03:21:29 +0000 |
---|---|---|
committer | Mike Stump <mrs@apple.com> | 2009-11-18 03:21:29 +0000 |
commit | c5d2ed73ff340665a3992bc4f3e7dcf0e47e9296 (patch) | |
tree | da9c6231f41dc623fd42af28de26a39fc572526d /clang/lib/CodeGen/CGRtti.cpp | |
parent | f77aaa00896d187cfbaed49a59859b402168f531 (diff) | |
download | bcm5719-llvm-c5d2ed73ff340665a3992bc4f3e7dcf0e47e9296.tar.gz bcm5719-llvm-c5d2ed73ff340665a3992bc4f3e7dcf0e47e9296.zip |
Be sure to set visibility for ZTI symbols for classes from the class.
llvm-svn: 89186
Diffstat (limited to 'clang/lib/CodeGen/CGRtti.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGRtti.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGRtti.cpp b/clang/lib/CodeGen/CGRtti.cpp index 4a9779a9b22..01767466e8b 100644 --- a/clang/lib/CodeGen/CGRtti.cpp +++ b/clang/lib/CodeGen/CGRtti.cpp @@ -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,7 +165,8 @@ public: OGV->replaceAllUsesWith(NewPtr); OGV->eraseFromParent(); } - GV->setVisibility(llvm::GlobalVariable::HiddenVisibility); + 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) { |