Revert r236879, "Do not emit thunks with available_externally linkage in comdats"
It broke pecoff, at least i686-cygwin. llvm-svn: 236937
This commit is contained in:
@@ -1298,7 +1298,8 @@ llvm::Constant *CodeGenModule::GetAddrOfUuidDescriptor(
|
||||
auto *GV = new llvm::GlobalVariable(
|
||||
getModule(), Init->getType(),
|
||||
/*isConstant=*/true, llvm::GlobalValue::LinkOnceODRLinkage, Init, Name);
|
||||
maybeSetTrivialComdat(*GV);
|
||||
if (supportsCOMDAT())
|
||||
GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
|
||||
return GV;
|
||||
}
|
||||
|
||||
@@ -1849,7 +1850,9 @@ CodeGenModule::CreateOrReplaceCXXRuntimeVariable(StringRef Name,
|
||||
OldGV->eraseFromParent();
|
||||
}
|
||||
|
||||
maybeSetTrivialComdat(*GV);
|
||||
if (supportsCOMDAT() && GV->isWeakForLinker() &&
|
||||
!GV->hasAvailableExternallyLinkage())
|
||||
GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
|
||||
|
||||
return GV;
|
||||
}
|
||||
@@ -1982,14 +1985,6 @@ void CodeGenModule::maybeSetTrivialComdat(const Decl &D,
|
||||
GO.setComdat(TheModule.getOrInsertComdat(GO.getName()));
|
||||
}
|
||||
|
||||
void CodeGenModule::maybeSetTrivialComdat(llvm::GlobalObject &GO) {
|
||||
if (!supportsCOMDAT())
|
||||
return;
|
||||
if (GO.isWeakForLinker() && !GO.hasAvailableExternallyLinkage()) {
|
||||
GO.setComdat(getModule().getOrInsertComdat(GO.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
void CodeGenModule::EmitGlobalVarDefinition(const VarDecl *D) {
|
||||
llvm::Constant *Init = nullptr;
|
||||
QualType ASTTy = D->getType();
|
||||
@@ -2929,7 +2924,10 @@ GenerateStringLiteral(llvm::Constant *C, llvm::GlobalValue::LinkageTypes LT,
|
||||
nullptr, llvm::GlobalVariable::NotThreadLocal, AddrSpace);
|
||||
GV->setAlignment(Alignment);
|
||||
GV->setUnnamedAddr(true);
|
||||
CGM.maybeSetTrivialComdat(*GV);
|
||||
if (GV->isWeakForLinker()) {
|
||||
assert(CGM.supportsCOMDAT() && "Only COFF uses weak string literals");
|
||||
GV->setComdat(M.getOrInsertComdat(GV->getName()));
|
||||
}
|
||||
|
||||
return GV;
|
||||
}
|
||||
@@ -3111,7 +3109,8 @@ llvm::Constant *CodeGenModule::GetAddrOfGlobalTemporary(
|
||||
setGlobalVisibility(GV, VD);
|
||||
GV->setAlignment(
|
||||
getContext().getTypeAlignInChars(MaterializedType).getQuantity());
|
||||
maybeSetTrivialComdat(*GV);
|
||||
if (supportsCOMDAT() && GV->isWeakForLinker())
|
||||
GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
|
||||
if (VD->getTLSKind())
|
||||
setTLSMode(GV, *VD);
|
||||
Slot = GV;
|
||||
|
||||
Reference in New Issue
Block a user