Fixup our uses of various linkages to match how llvm now works. I think they are all
correct, but an extra set of ObjC eyes would be good.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66342 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp
index 11836ad..e48b6c0 100644
--- a/lib/CodeGen/CGObjCMac.cpp
+++ b/lib/CodeGen/CGObjCMac.cpp
@@ -3885,7 +3885,9 @@
return Builder.CreateLoad(PTGV, false, "tmp");
PTGV = new llvm::GlobalVariable(
Init->getType(), false,
- llvm::GlobalValue::WeakLinkage,
+ // FIXME: review, was WeakLinkage,
+ // also review all other WeakLinkage changes
+ llvm::GlobalValue::WeakAnyLinkage,
Init,
ProtocolName,
&CGM.getModule());
@@ -4308,12 +4310,12 @@
if (Entry) {
// Already created, fix the linkage and update the initializer.
- Entry->setLinkage(llvm::GlobalValue::WeakLinkage);
+ Entry->setLinkage(llvm::GlobalValue::WeakAnyLinkage);
Entry->setInitializer(Init);
} else {
Entry =
new llvm::GlobalVariable(ObjCTypes.ProtocolnfABITy, false,
- llvm::GlobalValue::WeakLinkage,
+ llvm::GlobalValue::WeakAnyLinkage,
Init,
std::string("\01l_OBJC_PROTOCOL_$_")+ProtocolName,
&CGM.getModule());
@@ -4327,7 +4329,7 @@
// __DATA, __objc_protolist
llvm::GlobalVariable *PTGV = new llvm::GlobalVariable(
ObjCTypes.ProtocolnfABIPtrTy, false,
- llvm::GlobalValue::WeakLinkage,
+ llvm::GlobalValue::WeakAnyLinkage,
Entry,
std::string("\01l_OBJC_LABEL_PROTOCOL_$_")
+ProtocolName,
@@ -4547,7 +4549,7 @@
Values[1] = GetMethodVarName(Sel);
llvm::Constant *Init = llvm::ConstantStruct::get(Values);
GV = new llvm::GlobalVariable(Init->getType(), false,
- llvm::GlobalValue::WeakLinkage,
+ llvm::GlobalValue::WeakAnyLinkage,
Init,
Name,
&CGM.getModule());
@@ -5108,7 +5110,7 @@
Entry =
new llvm::GlobalVariable(ObjCTypes.EHTypeTy, false,
- llvm::GlobalValue::WeakLinkage,
+ llvm::GlobalValue::WeakAnyLinkage,
Init,
(std::string("OBJC_EHTYPE_$_") +
ID->getIdentifier()->getName()),