MS ABI: Emit static data members with proper linkage
llvm-svn: 209826
This commit is contained in:
@@ -1964,10 +1964,15 @@ llvm::GlobalValue::LinkageTypes CodeGenModule::getLLVMLinkageForDeclarator(
|
||||
|
||||
// If required by the ABI, give definitions of static data members with inline
|
||||
// initializers at least linkonce_odr linkage.
|
||||
auto const VD = dyn_cast<VarDecl>(D);
|
||||
if (getCXXABI().isInlineInitializedStaticDataMemberLinkOnce() &&
|
||||
isa<VarDecl>(D) &&
|
||||
isVarDeclInlineInitializedStaticDataMember(cast<VarDecl>(D)))
|
||||
VD && isVarDeclInlineInitializedStaticDataMember(VD)) {
|
||||
if (VD->hasAttr<DLLImportAttr>())
|
||||
return llvm::GlobalValue::AvailableExternallyLinkage;
|
||||
if (VD->hasAttr<DLLExportAttr>())
|
||||
return llvm::GlobalValue::WeakODRLinkage;
|
||||
return llvm::GlobalValue::LinkOnceODRLinkage;
|
||||
}
|
||||
|
||||
// C++ doesn't have tentative definitions and thus cannot have common
|
||||
// linkage.
|
||||
|
||||
Reference in New Issue
Block a user