Fix for issue #535.

The symbols must have weak_odr linkage if they result from a template instantiation.
This commit is contained in:
kai
2013-11-03 22:06:49 +01:00
parent 8408afcf6d
commit 8d7f0bf0eb
3 changed files with 7 additions and 5 deletions

View File

@@ -454,11 +454,11 @@ llvm::GlobalValue::LinkageTypes DtoInternalLinkage(Dsymbol* sym)
return llvm::GlobalValue::InternalLinkage;
}
llvm::GlobalValue::LinkageTypes DtoExternalLinkage(Dsymbol* sym)
llvm::GlobalValue::LinkageTypes DtoExternalLinkage(Dsymbol* sym, bool checkInline)
{
if (DtoIsTemplateInstance(sym))
return templateLinkage;
else if (isAvailableExternally(sym))
else if (checkInline && isAvailableExternally(sym))
return llvm::GlobalValue::AvailableExternallyLinkage;
else
return llvm::GlobalValue::ExternalLinkage;