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());
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());
// __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,
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());
Entry =
new llvm::GlobalVariable(ObjCTypes.EHTypeTy, false,
- llvm::GlobalValue::WeakLinkage,
+ llvm::GlobalValue::WeakAnyLinkage,
Init,
(std::string("OBJC_EHTYPE_$_") +
ID->getIdentifier()->getName()),
D->getAttr<WeakImportAttr>()) {
// "extern_weak" is overloaded in LLVM; we probably should have
// separate linkage types for this.
- GV->setLinkage(llvm::Function::ExternalWeakLinkage);
+ GV->setLinkage(llvm::Function::ExternalWeakAnyLinkage);
}
} else {
if (IsInternal) {
GV->setLinkage(llvm::Function::DLLExportLinkage);
} else if (D->getAttr<WeakAttr>() || D->getAttr<WeakImportAttr>() ||
IsInline)
- GV->setLinkage(llvm::Function::WeakLinkage);
+ GV->setLinkage(llvm::Function::WeakAnyLinkage);
}
}
setGlobalVisibility(GV, VisibilityAttr::HiddenVisibility);
if (D->getAttr<WeakAttr>() || D->getAttr<WeakImportAttr>())
- GV->setLinkage(llvm::GlobalValue::ExternalWeakLinkage);
+ GV->setLinkage(llvm::GlobalValue::ExternalWeakAnyLinkage);
if (const AsmLabelAttr *ALA = D->getAttr<AsmLabelAttr>()) {
// Prefaced with special LLVM marker to indicate that the name
else if (D->getAttr<DLLExportAttr>())
GV->setLinkage(llvm::Function::DLLExportLinkage);
else if (D->getAttr<WeakAttr>() || D->getAttr<WeakImportAttr>())
- GV->setLinkage(llvm::GlobalVariable::WeakLinkage);
+ GV->setLinkage(llvm::GlobalVariable::WeakAnyLinkage);
else {
// FIXME: This isn't right. This should handle common linkage and other
// stuff.
assert(0 && "Can't have auto or register globals");
case VarDecl::None:
if (!D->getInit())
- GV->setLinkage(llvm::GlobalVariable::CommonLinkage);
+ GV->setLinkage(llvm::GlobalVariable::CommonAnyLinkage);
else
GV->setLinkage(llvm::GlobalVariable::ExternalLinkage);
break;