[Clang][CodeGen] Fix linkage and visibility of template parameter objects
This diff fixes linkage and visibility of template parameter objects. The associated GitHub issue: https://github.com/llvm/llvm-project/issues/51571# Test plan: 1/ ninja check-all 2/ bootstrapped Clang passes tests Differential revision: https://reviews.llvm.org/D145859
This commit is contained in:
@@ -3238,9 +3238,13 @@ ConstantAddress CodeGenModule::GetAddrOfTemplateParamObject(
|
||||
return ConstantAddress::invalid();
|
||||
}
|
||||
|
||||
auto *GV = new llvm::GlobalVariable(
|
||||
getModule(), Init->getType(),
|
||||
/*isConstant=*/true, llvm::GlobalValue::LinkOnceODRLinkage, Init, Name);
|
||||
llvm::GlobalValue::LinkageTypes Linkage =
|
||||
isExternallyVisible(TPO->getLinkageAndVisibility().getLinkage())
|
||||
? llvm::GlobalValue::LinkOnceODRLinkage
|
||||
: llvm::GlobalValue::InternalLinkage;
|
||||
auto *GV = new llvm::GlobalVariable(getModule(), Init->getType(),
|
||||
/*isConstant=*/true, Linkage, Init, Name);
|
||||
setGVProperties(GV, TPO);
|
||||
if (supportsCOMDAT())
|
||||
GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
|
||||
Emitter.finalize(GV);
|
||||
|
||||
Reference in New Issue
Block a user