diff options
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 16 | 
1 files changed, 10 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 631c335..ae61661 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -210,7 +210,7 @@ void CodeGenModule::setTypeVisibility(llvm::GlobalValue *GV,    // in CGVTables.cpp.    // Preconditions. -  if (GV->getLinkage() != llvm::GlobalVariable::WeakODRLinkage || +  if (GV->getLinkage() != llvm::GlobalVariable::LinkOnceODRLinkage ||        GV->getVisibility() != llvm::GlobalVariable::DefaultVisibility)      return; @@ -1053,19 +1053,21 @@ CodeGenModule::getVTableLinkage(const CXXRecordDecl *RD) {        case TSK_Undeclared:        case TSK_ExplicitSpecialization:          if (KeyFunction->isInlined()) -          return llvm::GlobalVariable::WeakODRLinkage; +          return llvm::GlobalVariable::LinkOnceODRLinkage;          return llvm::GlobalVariable::ExternalLinkage;        case TSK_ImplicitInstantiation: +        return llvm::GlobalVariable::LinkOnceODRLinkage; +        case TSK_ExplicitInstantiationDefinition:          return llvm::GlobalVariable::WeakODRLinkage; -         +          case TSK_ExplicitInstantiationDeclaration:          // FIXME: Use available_externally linkage. However, this currently          // breaks LLVM's build due to undefined symbols.          //      return llvm::GlobalVariable::AvailableExternallyLinkage; -        return llvm::GlobalVariable::WeakODRLinkage; +        return llvm::GlobalVariable::LinkOnceODRLinkage;      }    } @@ -1073,6 +1075,8 @@ CodeGenModule::getVTableLinkage(const CXXRecordDecl *RD) {    case TSK_Undeclared:    case TSK_ExplicitSpecialization:    case TSK_ImplicitInstantiation: +    return llvm::GlobalVariable::LinkOnceODRLinkage; +    case TSK_ExplicitInstantiationDefinition:      return llvm::GlobalVariable::WeakODRLinkage; @@ -1080,11 +1084,11 @@ CodeGenModule::getVTableLinkage(const CXXRecordDecl *RD) {      // FIXME: Use available_externally linkage. However, this currently      // breaks LLVM's build due to undefined symbols.      //   return llvm::GlobalVariable::AvailableExternallyLinkage; -    return llvm::GlobalVariable::WeakODRLinkage; +    return llvm::GlobalVariable::LinkOnceODRLinkage;    }    // Silence GCC warning. -  return llvm::GlobalVariable::WeakODRLinkage; +  return llvm::GlobalVariable::LinkOnceODRLinkage;  }  CharUnits CodeGenModule::GetTargetTypeStoreSize(const llvm::Type *Ty) const {  | 
