diff options
author | John McCall <rjmccall@apple.com> | 2014-02-08 00:41:16 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2014-02-08 00:41:16 +0000 |
commit | ec0ca13fc0cbec5984df5836f2c7384daec0bbea (patch) | |
tree | 61102fcda024a232a3eff461cc6558086457772b /lib/CodeGen/CodeGenModule.cpp | |
parent | b7f8c7a32c4b630a4f7fe73a5418b30831651323 (diff) | |
download | clang-ec0ca13fc0cbec5984df5836f2c7384daec0bbea.tar.gz clang-ec0ca13fc0cbec5984df5836f2c7384daec0bbea.tar.bz2 clang-ec0ca13fc0cbec5984df5836f2c7384daec0bbea.tar.xz |
Remove the -fhidden-weak-vtables -cc1 option. It was dead,
gross, and increasingly replaced through other mechanisms.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201011 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | lib/CodeGen/CodeGenModule.cpp | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index c73e931c9d..c0c1219f8d 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -423,73 +423,6 @@ void CodeGenModule::setTLSMode(llvm::GlobalVariable *GV, GV->setThreadLocalMode(TLM); } -/// Set the symbol visibility of type information (vtable and RTTI) -/// associated with the given type. -void CodeGenModule::setTypeVisibility(llvm::GlobalValue *GV, - const CXXRecordDecl *RD, - TypeVisibilityKind TVK) const { - setGlobalVisibility(GV, RD); - - if (!CodeGenOpts.HiddenWeakVTables) - return; - - // We never want to drop the visibility for RTTI names. - if (TVK == TVK_ForRTTIName) - return; - - // We want to drop the visibility to hidden for weak type symbols. - // This isn't possible if there might be unresolved references - // elsewhere that rely on this symbol being visible. - - // This should be kept roughly in sync with setThunkVisibility - // in CGVTables.cpp. - - // Preconditions. - if (GV->getLinkage() != llvm::GlobalVariable::LinkOnceODRLinkage || - GV->getVisibility() != llvm::GlobalVariable::DefaultVisibility) - return; - - // Don't override an explicit visibility attribute. - if (RD->getExplicitVisibility(NamedDecl::VisibilityForType)) - return; - - switch (RD->getTemplateSpecializationKind()) { - // We have to disable the optimization if this is an EI definition - // because there might be EI declarations in other shared objects. - case TSK_ExplicitInstantiationDefinition: - case TSK_ExplicitInstantiationDeclaration: - return; - - // Every use of a non-template class's type information has to emit it. - case TSK_Undeclared: - break; - - // In theory, implicit instantiations can ignore the possibility of - // an explicit instantiation declaration because there necessarily - // must be an EI definition somewhere with default visibility. In - // practice, it's possible to have an explicit instantiation for - // an arbitrary template class, and linkers aren't necessarily able - // to deal with mixed-visibility symbols. - case TSK_ExplicitSpecialization: - case TSK_ImplicitInstantiation: - return; - } - - // If there's a key function, there may be translation units - // that don't have the key function's definition. But ignore - // this if we're emitting RTTI under -fno-rtti. - if (!(TVK != TVK_ForRTTI) || LangOpts.RTTI) { - // FIXME: what should we do if we "lose" the key function during - // the emission of the file? - if (Context.getCurrentKeyFunction(RD)) - return; - } - - // Otherwise, drop the visibility to hidden. - GV->setVisibility(llvm::GlobalValue::HiddenVisibility); - GV->setUnnamedAddr(true); -} - StringRef CodeGenModule::getMangledName(GlobalDecl GD) { const NamedDecl *ND = cast<NamedDecl>(GD.getDecl()); |