summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGObjCMac.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/CodeGen/CGObjCMac.cpp')
-rw-r--r--clang/lib/CodeGen/CGObjCMac.cpp77
1 files changed, 52 insertions, 25 deletions
diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp
index 2dbd54a2596..3434064d263 100644
--- a/clang/lib/CodeGen/CGObjCMac.cpp
+++ b/clang/lib/CodeGen/CGObjCMac.cpp
@@ -1646,7 +1646,8 @@ llvm::Constant *CGObjCMac::GetOrEmitProtocol(const ObjCProtocolDecl *PD) {
Entry->setInitializer(Init);
} else {
Entry =
- new llvm::GlobalVariable(ObjCTypes.ProtocolTy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ProtocolTy, false,
llvm::GlobalValue::InternalLinkage,
Init,
std::string("\01L_OBJC_PROTOCOL_")+ProtocolName,
@@ -1669,7 +1670,8 @@ llvm::Constant *CGObjCMac::GetOrEmitProtocolRef(const ObjCProtocolDecl *PD) {
// reference or not. At module finalization we add the empty
// contents for protocols which were referenced but never defined.
Entry =
- new llvm::GlobalVariable(ObjCTypes.ProtocolTy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ProtocolTy, false,
llvm::GlobalValue::ExternalLinkage,
0,
"\01L_OBJC_PROTOCOL_" + PD->getNameAsString(),
@@ -2100,7 +2102,8 @@ llvm::Constant *CGObjCMac::EmitMetaClass(const ObjCImplementationDecl *ID,
GV->setLinkage(llvm::GlobalValue::InternalLinkage);
GV->setInitializer(Init);
} else {
- GV = new llvm::GlobalVariable(ObjCTypes.ClassTy, false,
+ GV = new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ClassTy, false,
llvm::GlobalValue::InternalLinkage,
Init, Name,
&CGM.getModule());
@@ -2130,7 +2133,8 @@ llvm::Constant *CGObjCMac::EmitMetaClassRef(const ObjCInterfaceDecl *ID) {
} else {
// Generate as an external reference to keep a consistent
// module. This will be patched up when we emit the metaclass.
- return new llvm::GlobalVariable(ObjCTypes.ClassTy, false,
+ return new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ClassTy, false,
llvm::GlobalValue::ExternalLinkage,
0,
Name,
@@ -2311,7 +2315,7 @@ CGObjCCommonMac::CreateMetadataVar(const std::string &Name,
bool AddToUsed) {
const llvm::Type *Ty = Init->getType();
llvm::GlobalVariable *GV =
- new llvm::GlobalVariable(Ty, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(), Ty, false,
llvm::GlobalValue::InternalLinkage,
Init,
Name,
@@ -4071,7 +4075,8 @@ void CGObjCNonFragileABIMac::AddModuleClassList(const
Symbols);
llvm::GlobalVariable *GV =
- new llvm::GlobalVariable(Init->getType(), false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ Init->getType(), false,
llvm::GlobalValue::InternalLinkage,
Init,
SymbolName,
@@ -4117,7 +4122,8 @@ void CGObjCNonFragileABIMac::FinishNonFragileABIModule() {
llvm::ArrayType::get(ObjCTypes.IntTy, 2),
Values);
llvm::GlobalVariable *IMGV =
- new llvm::GlobalVariable(Init->getType(), false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ Init->getType(), false,
llvm::GlobalValue::InternalLinkage,
Init,
"\01L_OBJC_IMAGE_INFO",
@@ -4261,7 +4267,8 @@ llvm::GlobalVariable * CGObjCNonFragileABIMac::BuildClassRoTInitializer(
llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.ClassRonfABITy,
Values);
llvm::GlobalVariable *CLASS_RO_GV =
- new llvm::GlobalVariable(ObjCTypes.ClassRonfABITy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ClassRonfABITy, false,
llvm::GlobalValue::InternalLinkage,
Init,
(flags & CLS_META) ?
@@ -4336,6 +4343,7 @@ void CGObjCNonFragileABIMac::GenerateClass(const ObjCImplementationDecl *ID) {
std::string ClassName = ID->getNameAsString();
if (!ObjCEmptyCacheVar) {
ObjCEmptyCacheVar = new llvm::GlobalVariable(
+ CGM.getModule().getContext(),
ObjCTypes.CacheTy,
false,
llvm::GlobalValue::ExternalLinkage,
@@ -4344,6 +4352,7 @@ void CGObjCNonFragileABIMac::GenerateClass(const ObjCImplementationDecl *ID) {
&CGM.getModule());
ObjCEmptyVtableVar = new llvm::GlobalVariable(
+ CGM.getModule().getContext(),
ObjCTypes.ImpnfABITy,
false,
llvm::GlobalValue::ExternalLinkage,
@@ -4453,6 +4462,7 @@ llvm::Value *CGObjCNonFragileABIMac::GenerateProtocolRef(CGBuilderTy &Builder,
if (PTGV)
return Builder.CreateLoad(PTGV, false, "tmp");
PTGV = new llvm::GlobalVariable(
+ CGM.getModule().getContext(),
Init->getType(), false,
llvm::GlobalValue::WeakAnyLinkage,
Init,
@@ -4538,7 +4548,8 @@ void CGObjCNonFragileABIMac::GenerateCategory(const ObjCCategoryImplDecl *OCD) {
llvm::ConstantStruct::get(ObjCTypes.CategorynfABITy,
Values);
llvm::GlobalVariable *GCATV
- = new llvm::GlobalVariable(ObjCTypes.CategorynfABITy,
+ = new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.CategorynfABITy,
false,
llvm::GlobalValue::InternalLinkage,
Init,
@@ -4601,7 +4612,8 @@ llvm::Constant *CGObjCNonFragileABIMac::EmitMethodList(
llvm::Constant *Init = llvm::ConstantStruct::get(Values);
llvm::GlobalVariable *GV =
- new llvm::GlobalVariable(Init->getType(), false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ Init->getType(), false,
llvm::GlobalValue::InternalLinkage,
Init,
Name,
@@ -4630,7 +4642,7 @@ llvm::GlobalVariable * CGObjCNonFragileABIMac::ObjCIvarOffsetVariable(
CGM.getModule().getGlobalVariable(Name);
if (!IvarOffsetGV)
IvarOffsetGV =
- new llvm::GlobalVariable(ObjCTypes.LongTy,
+ new llvm::GlobalVariable(CGM.getModule().getContext(), ObjCTypes.LongTy,
false,
llvm::GlobalValue::ExternalLinkage,
0,
@@ -4729,7 +4741,8 @@ llvm::Constant *CGObjCNonFragileABIMac::EmitIvarList(
llvm::Constant *Init = llvm::ConstantStruct::get(Values);
const char *Prefix = "\01l_OBJC_$_INSTANCE_VARIABLES_";
llvm::GlobalVariable *GV =
- new llvm::GlobalVariable(Init->getType(), false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ Init->getType(), false,
llvm::GlobalValue::InternalLinkage,
Init,
Prefix + OID->getNameAsString(),
@@ -4752,7 +4765,8 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocolRef(
// reference or not. At module finalization we add the empty
// contents for protocols which were referenced but never defined.
Entry =
- new llvm::GlobalVariable(ObjCTypes.ProtocolnfABITy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ProtocolnfABITy, false,
llvm::GlobalValue::ExternalLinkage,
0,
"\01l_OBJC_PROTOCOL_$_" + PD->getNameAsString(),
@@ -4856,7 +4870,8 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocol(
Entry->setInitializer(Init);
} else {
Entry =
- new llvm::GlobalVariable(ObjCTypes.ProtocolnfABITy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ProtocolnfABITy, false,
llvm::GlobalValue::WeakAnyLinkage,
Init,
std::string("\01l_OBJC_PROTOCOL_$_")+ProtocolName,
@@ -4870,6 +4885,7 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocol(
// Use this protocol meta-data to build protocol list table in section
// __DATA, __objc_protolist
llvm::GlobalVariable *PTGV = new llvm::GlobalVariable(
+ CGM.getModule().getContext(),
ObjCTypes.ProtocolnfABIPtrTy, false,
llvm::GlobalValue::WeakAnyLinkage,
Entry,
@@ -4923,7 +4939,8 @@ CGObjCNonFragileABIMac::EmitProtocolList(const std::string &Name,
ProtocolRefs);
llvm::Constant *Init = llvm::ConstantStruct::get(Values);
- GV = new llvm::GlobalVariable(Init->getType(), false,
+ GV = new llvm::GlobalVariable(CGM.getModule().getContext(),
+ Init->getType(), false,
llvm::GlobalValue::InternalLinkage,
Init,
Name,
@@ -5066,7 +5083,8 @@ CodeGen::RValue CGObjCNonFragileABIMac::EmitMessageSend(
Values[0] = Fn;
Values[1] = GetMethodVarName(Sel);
llvm::Constant *Init = llvm::ConstantStruct::get(Values);
- GV = new llvm::GlobalVariable(Init->getType(), false,
+ GV = new llvm::GlobalVariable(CGM.getModule().getContext(),
+ Init->getType(), false,
llvm::GlobalValue::WeakAnyLinkage,
Init,
Name,
@@ -5114,7 +5132,8 @@ CGObjCNonFragileABIMac::GetClassGlobal(const std::string &Name) {
llvm::GlobalVariable *GV = CGM.getModule().getGlobalVariable(Name);
if (!GV) {
- GV = new llvm::GlobalVariable(ObjCTypes.ClassnfABITy, false,
+ GV = new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ClassnfABITy, false,
llvm::GlobalValue::ExternalLinkage,
0, Name, &CGM.getModule());
}
@@ -5130,7 +5149,8 @@ llvm::Value *CGObjCNonFragileABIMac::EmitClassRef(CGBuilderTy &Builder,
std::string ClassName(getClassSymbolPrefix() + ID->getNameAsString());
llvm::GlobalVariable *ClassGV = GetClassGlobal(ClassName);
Entry =
- new llvm::GlobalVariable(ObjCTypes.ClassnfABIPtrTy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ClassnfABIPtrTy, false,
llvm::GlobalValue::InternalLinkage,
ClassGV,
"\01L_OBJC_CLASSLIST_REFERENCES_$_",
@@ -5154,7 +5174,8 @@ CGObjCNonFragileABIMac::EmitSuperClassRef(CGBuilderTy &Builder,
std::string ClassName(getClassSymbolPrefix() + ID->getNameAsString());
llvm::GlobalVariable *ClassGV = GetClassGlobal(ClassName);
Entry =
- new llvm::GlobalVariable(ObjCTypes.ClassnfABIPtrTy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ClassnfABIPtrTy, false,
llvm::GlobalValue::InternalLinkage,
ClassGV,
"\01L_OBJC_CLASSLIST_SUP_REFS_$_",
@@ -5181,7 +5202,8 @@ llvm::Value *CGObjCNonFragileABIMac::EmitMetaClassRef(CGBuilderTy &Builder,
std::string MetaClassName(getMetaclassSymbolPrefix() + ID->getNameAsString());
llvm::GlobalVariable *MetaClassGV = GetClassGlobal(MetaClassName);
Entry =
- new llvm::GlobalVariable(ObjCTypes.ClassnfABIPtrTy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.ClassnfABIPtrTy, false,
llvm::GlobalValue::InternalLinkage,
MetaClassGV,
"\01L_OBJC_CLASSLIST_SUP_REFS_$_",
@@ -5269,7 +5291,8 @@ llvm::Value *CGObjCNonFragileABIMac::EmitSelector(CGBuilderTy &Builder,
llvm::ConstantExpr::getBitCast(GetMethodVarName(Sel),
ObjCTypes.SelectorPtrTy);
Entry =
- new llvm::GlobalVariable(ObjCTypes.SelectorPtrTy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.SelectorPtrTy, false,
llvm::GlobalValue::InternalLinkage,
Casted, "\01L_OBJC_SELECTOR_REFERENCES_",
&CGM.getModule());
@@ -5469,7 +5492,8 @@ CGObjCNonFragileABIMac::EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
CGM.getModule().getGlobalVariable("OBJC_EHTYPE_id");
if (!IDEHType)
IDEHType =
- new llvm::GlobalVariable(ObjCTypes.EHTypeTy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.EHTypeTy, false,
llvm::GlobalValue::ExternalLinkage,
0, "OBJC_EHTYPE_id", &CGM.getModule());
SelectorArgs.push_back(IDEHType);
@@ -5686,7 +5710,8 @@ CGObjCNonFragileABIMac::GetInterfaceEHType(const ObjCInterfaceDecl *ID,
// attribute, emit an external reference.
if (hasObjCExceptionAttribute(CGM.getContext(), ID))
return Entry =
- new llvm::GlobalVariable(ObjCTypes.EHTypeTy, false,
+ new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.EHTypeTy, false,
llvm::GlobalValue::ExternalLinkage,
0,
(std::string("OBJC_EHTYPE_$_") +
@@ -5702,7 +5727,8 @@ CGObjCNonFragileABIMac::GetInterfaceEHType(const ObjCInterfaceDecl *ID,
llvm::GlobalVariable *VTableGV =
CGM.getModule().getGlobalVariable(VTableName);
if (!VTableGV)
- VTableGV = new llvm::GlobalVariable(ObjCTypes.Int8PtrTy, false,
+ VTableGV = new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.Int8PtrTy, false,
llvm::GlobalValue::ExternalLinkage,
0, VTableName, &CGM.getModule());
@@ -5717,7 +5743,8 @@ CGObjCNonFragileABIMac::GetInterfaceEHType(const ObjCInterfaceDecl *ID,
if (Entry) {
Entry->setInitializer(Init);
} else {
- Entry = new llvm::GlobalVariable(ObjCTypes.EHTypeTy, false,
+ Entry = new llvm::GlobalVariable(CGM.getModule().getContext(),
+ ObjCTypes.EHTypeTy, false,
llvm::GlobalValue::WeakAnyLinkage,
Init,
(std::string("OBJC_EHTYPE_$_") +
OpenPOWER on IntegriCloud