Update for LLVM API change.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@75446 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp
index 699fb9a..d3a0fc6 100644
--- a/lib/CodeGen/CGObjCMac.cpp
+++ b/lib/CodeGen/CGObjCMac.cpp
@@ -23,6 +23,7 @@
 #include "clang/Basic/LangOptions.h"
 
 #include "llvm/Intrinsics.h"
+#include "llvm/LLVMContext.h"
 #include "llvm/Module.h"
 #include "llvm/ADT/DenseSet.h"
 #include "llvm/Target/TargetData.h"
@@ -764,6 +765,7 @@
   
 protected:
   CodeGen::CodeGenModule &CGM;
+  llvm::LLVMContext &VMContext;
   // FIXME! May not be needing this after all.
   unsigned ObjCABI;
   
@@ -925,7 +927,8 @@
   virtual void MergeMetadataGlobals(std::vector<llvm::Constant*> &UsedArray);
 
 public:
-  CGObjCCommonMac(CodeGen::CodeGenModule &cgm) : CGM(cgm)
+  CGObjCCommonMac(CodeGen::CodeGenModule &cgm) :
+    CGM(cgm), VMContext(cgm.getLLVMContext())
   { }
   
   virtual llvm::Constant *GenerateConstantString(const ObjCStringLiteral *SL);
@@ -1718,7 +1721,7 @@
   // Return null if no extension bits are used.
   if (Values[1]->isNullValue() && Values[2]->isNullValue() && 
       Values[3]->isNullValue())
-    return llvm::Constant::getNullValue(ObjCTypes.ProtocolExtensionPtrTy);
+    return VMContext.getNullValue(ObjCTypes.ProtocolExtensionPtrTy);
 
   llvm::Constant *Init = 
     llvm::ConstantStruct::get(ObjCTypes.ProtocolExtensionTy, Values);
@@ -1747,14 +1750,14 @@
 
   // Just return null for empty protocol lists
   if (ProtocolRefs.empty()) 
-    return llvm::Constant::getNullValue(ObjCTypes.ProtocolListPtrTy);
+    return VMContext.getNullValue(ObjCTypes.ProtocolListPtrTy);
 
   // This list is null terminated.
-  ProtocolRefs.push_back(llvm::Constant::getNullValue(ObjCTypes.ProtocolPtrTy));
+  ProtocolRefs.push_back(VMContext.getNullValue(ObjCTypes.ProtocolPtrTy));
 
   std::vector<llvm::Constant*> Values(3);
   // This field is only used by the runtime.
-  Values[0] = llvm::Constant::getNullValue(ObjCTypes.ProtocolListPtrTy);
+  Values[0] = VMContext.getNullValue(ObjCTypes.ProtocolListPtrTy);
   Values[1] = llvm::ConstantInt::get(ObjCTypes.LongTy, ProtocolRefs.size() - 1);
   Values[2] = 
     llvm::ConstantArray::get(llvm::ArrayType::get(ObjCTypes.ProtocolPtrTy, 
@@ -1796,7 +1799,7 @@
 
   // Return null for empty list.
   if (Properties.empty())
-    return llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
+    return VMContext.getNullValue(ObjCTypes.PropertyListPtrTy);
 
   unsigned PropertySize = 
     CGM.getTargetData().getTypeAllocSize(ObjCTypes.PropertyTy);
@@ -1838,7 +1841,7 @@
                                               const ConstantVector &Methods) {
   // Return null for empty list.
   if (Methods.empty())
-    return llvm::Constant::getNullValue(ObjCTypes.MethodDescriptionListPtrTy);
+    return VMContext.getNullValue(ObjCTypes.MethodDescriptionListPtrTy);
 
   std::vector<llvm::Constant*> Values(2);
   Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, Methods.size());
@@ -1907,7 +1910,7 @@
                        Category->protocol_begin(),
                        Category->protocol_end());
   } else {
-    Values[4] = llvm::Constant::getNullValue(ObjCTypes.ProtocolListPtrTy);
+    Values[4] = VMContext.getNullValue(ObjCTypes.ProtocolListPtrTy);
   }
   Values[5] = llvm::ConstantInt::get(ObjCTypes.IntTy, Size);
 
@@ -1916,7 +1919,7 @@
     Values[6] = EmitPropertyList(std::string("\01l_OBJC_$_PROP_LIST_") + ExtName,
                                  OCD, Category, ObjCTypes);
   } else {
-    Values[6] = llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
+    Values[6] = VMContext.getNullValue(ObjCTypes.PropertyListPtrTy);
   }
   
   llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.CategoryTy,
@@ -2016,7 +2019,7 @@
       llvm::ConstantExpr::getBitCast(GetClassName(Super->getIdentifier()),
                                      ObjCTypes.ClassPtrTy);
   } else {
-    Values[ 1] = llvm::Constant::getNullValue(ObjCTypes.ClassPtrTy);
+    Values[ 1] = VMContext.getNullValue(ObjCTypes.ClassPtrTy);
   }
   Values[ 2] = GetClassName(ID->getIdentifier());
   // Version is always 0.
@@ -2029,7 +2032,7 @@
                    "__OBJC,__inst_meth,regular,no_dead_strip",
                    InstanceMethods);
   // cache is always NULL.
-  Values[ 8] = llvm::Constant::getNullValue(ObjCTypes.CachePtrTy);
+  Values[ 8] = VMContext.getNullValue(ObjCTypes.CachePtrTy);
   Values[ 9] = Protocols;
   Values[10] = BuildIvarLayout(ID, true); 
   Values[11] = EmitClassExtension(ID);
@@ -2068,7 +2071,7 @@
       llvm::ConstantExpr::getBitCast(GetClassName(Super->getIdentifier()),
                                      ObjCTypes.ClassPtrTy);
   } else {
-    Values[ 1] = llvm::Constant::getNullValue(ObjCTypes.ClassPtrTy);
+    Values[ 1] = VMContext.getNullValue(ObjCTypes.ClassPtrTy);
   }
   Values[ 2] = GetClassName(ID->getIdentifier());
   // Version is always 0.
@@ -2081,12 +2084,12 @@
                    "__OBJC,__cls_meth,regular,no_dead_strip",
                    Methods);
   // cache is always NULL.
-  Values[ 8] = llvm::Constant::getNullValue(ObjCTypes.CachePtrTy);
+  Values[ 8] = VMContext.getNullValue(ObjCTypes.CachePtrTy);
   Values[ 9] = Protocols;
   // ivar_layout for metaclass is always NULL.
-  Values[10] = llvm::Constant::getNullValue(ObjCTypes.Int8PtrTy);
+  Values[10] = VMContext.getNullValue(ObjCTypes.Int8PtrTy);
   // The class extension is always unused for metaclasses.
-  Values[11] = llvm::Constant::getNullValue(ObjCTypes.ClassExtensionPtrTy);
+  Values[11] = VMContext.getNullValue(ObjCTypes.ClassExtensionPtrTy);
   llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.ClassTy,
                                                    Values);
 
@@ -2157,7 +2160,7 @@
 
   // Return null if no extension bits are used.
   if (Values[1]->isNullValue() && Values[2]->isNullValue())
-    return llvm::Constant::getNullValue(ObjCTypes.ClassExtensionPtrTy);
+    return VMContext.getNullValue(ObjCTypes.ClassExtensionPtrTy);
 
   llvm::Constant *Init = 
     llvm::ConstantStruct::get(ObjCTypes.ClassExtensionTy, Values);
@@ -2188,7 +2191,7 @@
   // the cleanest solution would be to make up an ObjCInterfaceDecl
   // for the class.
   if (ForClass)
-    return llvm::Constant::getNullValue(ObjCTypes.IvarListPtrTy);
+    return VMContext.getNullValue(ObjCTypes.IvarListPtrTy);
   
   ObjCInterfaceDecl *OID = 
     const_cast<ObjCInterfaceDecl*>(ID->getClassInterface());
@@ -2210,7 +2213,7 @@
 
   // Return null for empty list.
   if (Ivars.empty())
-    return llvm::Constant::getNullValue(ObjCTypes.IvarListPtrTy);
+    return VMContext.getNullValue(ObjCTypes.IvarListPtrTy);
 
   std::vector<llvm::Constant*> Values(2);
   Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, Ivars.size());
@@ -2269,10 +2272,10 @@
                                           const ConstantVector &Methods) {
   // Return null for empty list.
   if (Methods.empty())
-    return llvm::Constant::getNullValue(ObjCTypes.MethodListPtrTy);
+    return VMContext.getNullValue(ObjCTypes.MethodListPtrTy);
 
   std::vector<llvm::Constant*> Values(3);
-  Values[0] = llvm::Constant::getNullValue(ObjCTypes.Int8PtrTy);
+  Values[0] = VMContext.getNullValue(ObjCTypes.Int8PtrTy);
   Values[1] = llvm::ConstantInt::get(ObjCTypes.IntTy, Methods.size());
   llvm::ArrayType *AT = llvm::ArrayType::get(ObjCTypes.MethodTy,
                                              Methods.size());
@@ -2889,11 +2892,11 @@
 
   // Return null if no symbols were defined.
   if (!NumClasses && !NumCategories)
-    return llvm::Constant::getNullValue(ObjCTypes.SymtabPtrTy);
+    return VMContext.getNullValue(ObjCTypes.SymtabPtrTy);
 
   std::vector<llvm::Constant*> Values(5);
   Values[0] = llvm::ConstantInt::get(ObjCTypes.LongTy, 0);
-  Values[1] = llvm::Constant::getNullValue(ObjCTypes.SelectorPtrTy);
+  Values[1] = VMContext.getNullValue(ObjCTypes.SelectorPtrTy);
   Values[2] = llvm::ConstantInt::get(ObjCTypes.ShortTy, NumClasses);
   Values[3] = llvm::ConstantInt::get(ObjCTypes.ShortTy, NumCategories);
 
@@ -2973,7 +2976,7 @@
 /// ivar layout bitmap.
 llvm::Constant *CGObjCCommonMac::GetIvarLayoutName(IdentifierInfo *Ident,
                                       const ObjCCommonTypesHelper &ObjCTypes) {
-  return llvm::Constant::getNullValue(ObjCTypes.Int8PtrTy);
+  return VMContext.getNullValue(ObjCTypes.Int8PtrTy);
 }
 
 static QualType::GCAttrTypes GetGCAttrTypeForType(ASTContext &Ctx, 
@@ -3178,7 +3181,7 @@
   unsigned int WordsToScan, WordsToSkip;
   const llvm::Type *PtrTy = llvm::PointerType::getUnqual(llvm::Type::Int8Ty);
   if (CGM.getLangOptions().getGCMode() == LangOptions::NonGC)
-    return llvm::Constant::getNullValue(PtrTy);
+    return VMContext.getNullValue(PtrTy);
   
   llvm::SmallVector<FieldDecl*, 32> RecFields;
   const ObjCInterfaceDecl *OI = OMD->getClassInterface();
@@ -3191,14 +3194,14 @@
     RecFields.push_back(cast<FieldDecl>(Ivars[k]));
   
   if (RecFields.empty())
-    return llvm::Constant::getNullValue(PtrTy);
+    return VMContext.getNullValue(PtrTy);
   
   SkipIvars.clear(); 
   IvarsInfo.clear();
   
   BuildAggrIvarLayout(OMD, 0, 0, RecFields, 0, ForStrongLayout, hasUnion);
   if (IvarsInfo.empty())
-    return llvm::Constant::getNullValue(PtrTy);
+    return VMContext.getNullValue(PtrTy);
   
   // Sort on byte position in case we encounterred a union nested in
   // the ivar list.
@@ -3339,7 +3342,7 @@
   // if ivar_layout bitmap is all 1 bits (nothing skipped) then use NULL as
   // final layout.
   if (ForStrongLayout && !BytesSkipped)
-    return llvm::Constant::getNullValue(PtrTy);
+    return VMContext.getNullValue(PtrTy);
   llvm::GlobalVariable * Entry = CreateMetadataVar("\01L_OBJC_CLASS_NAME_",
                                       llvm::ConstantArray::get(BitMap.c_str()),
                                       "__TEXT,__cstring,cstring_literals",
@@ -3464,11 +3467,11 @@
       continue;
 
     std::vector<llvm::Constant*> Values(5);
-    Values[0] = llvm::Constant::getNullValue(ObjCTypes.ProtocolExtensionPtrTy);
+    Values[0] = VMContext.getNullValue(ObjCTypes.ProtocolExtensionPtrTy);
     Values[1] = GetClassName(i->first);
-    Values[2] = llvm::Constant::getNullValue(ObjCTypes.ProtocolListPtrTy);
+    Values[2] = VMContext.getNullValue(ObjCTypes.ProtocolListPtrTy);
     Values[3] = Values[4] =
-      llvm::Constant::getNullValue(ObjCTypes.MethodDescriptionListPtrTy);
+      VMContext.getNullValue(ObjCTypes.MethodDescriptionListPtrTy);
     i->second->setLinkage(llvm::GlobalValue::InternalLinkage);
     i->second->setInitializer(llvm::ConstantStruct::get(ObjCTypes.ProtocolTy,
                                                         Values));
@@ -4241,13 +4244,13 @@
                                 OID->protocol_end());
   
   if (flags & CLS_META)
-    Values[ 7] = llvm::Constant::getNullValue(ObjCTypes.IvarListnfABIPtrTy);
+    Values[ 7] = VMContext.getNullValue(ObjCTypes.IvarListnfABIPtrTy);
   else
     Values[ 7] = EmitIvarList(ID);
   Values[ 8] = (flags & CLS_META) ? GetIvarLayoutName(0, ObjCTypes) 
                                   : BuildIvarLayout(ID, false); 
   if (flags & CLS_META)
-    Values[ 9] = llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
+    Values[ 9] = VMContext.getNullValue(ObjCTypes.PropertyListPtrTy);
   else
     Values[ 9] = 
       EmitPropertyList(
@@ -4289,7 +4292,7 @@
   Values[0] = IsAGV;
   Values[1] = SuperClassGV 
                 ? SuperClassGV
-                : llvm::Constant::getNullValue(ObjCTypes.ClassnfABIPtrTy);
+                : VMContext.getNullValue(ObjCTypes.ClassnfABIPtrTy);
   Values[2] = ObjCEmptyCacheVar;  // &ObjCEmptyCacheVar
   Values[3] = ObjCEmptyVtableVar; // &ObjCEmptyVtableVar
   Values[4] = ClassRoGV;                 // &CLASS_RO_GV
@@ -4524,8 +4527,8 @@
                        OCD, Category, ObjCTypes);
   }
   else {
-    Values[4] = llvm::Constant::getNullValue(ObjCTypes.ProtocolListnfABIPtrTy);
-    Values[5] = llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
+    Values[4] = VMContext.getNullValue(ObjCTypes.ProtocolListnfABIPtrTy);
+    Values[5] = VMContext.getNullValue(ObjCTypes.PropertyListPtrTy);
   }
     
   llvm::Constant *Init = 
@@ -4580,7 +4583,7 @@
                                               const ConstantVector &Methods) {
   // Return null for empty list.
   if (Methods.empty())
-    return llvm::Constant::getNullValue(ObjCTypes.MethodListnfABIPtrTy);
+    return VMContext.getNullValue(ObjCTypes.MethodListnfABIPtrTy);
   
   std::vector<llvm::Constant*> Values(3);
   // sizeof(struct _objc_method)
@@ -4709,7 +4712,7 @@
   }
   // Return null for empty list.
   if (Ivars.empty())
-    return llvm::Constant::getNullValue(ObjCTypes.IvarListnfABIPtrTy);
+    return VMContext.getNullValue(ObjCTypes.IvarListnfABIPtrTy);
   std::vector<llvm::Constant*> Values(3);
   unsigned Size = CGM.getTargetData().getTypeAllocSize(ObjCTypes.IvarnfABITy);
   Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, Size);
@@ -4807,7 +4810,7 @@
   
   std::vector<llvm::Constant*> Values(10);
   // isa is NULL
-  Values[0] = llvm::Constant::getNullValue(ObjCTypes.ObjectPtrTy);
+  Values[0] = VMContext.getNullValue(ObjCTypes.ObjectPtrTy);
   Values[1] = GetClassName(PD->getIdentifier());
   Values[2] = EmitProtocolList(
                           "\01l_OBJC_$_PROTOCOL_REFS_" + PD->getNameAsString(),
@@ -4835,7 +4838,7 @@
   uint32_t Size = 
     CGM.getTargetData().getTypeAllocSize(ObjCTypes.ProtocolnfABITy);
   Values[8] = llvm::ConstantInt::get(ObjCTypes.IntTy, Size);
-  Values[9] = llvm::Constant::getNullValue(ObjCTypes.IntTy);
+  Values[9] = VMContext.getNullValue(ObjCTypes.IntTy);
   llvm::Constant *Init = llvm::ConstantStruct::get(ObjCTypes.ProtocolnfABITy,
                                                    Values);
   
@@ -4888,7 +4891,7 @@
   
   // Just return null for empty protocol lists
   if (begin == end) 
-    return llvm::Constant::getNullValue(ObjCTypes.ProtocolListnfABIPtrTy);
+    return VMContext.getNullValue(ObjCTypes.ProtocolListnfABIPtrTy);
   
   // FIXME: We shouldn't need to do this lookup here, should we?
   llvm::GlobalVariable *GV = CGM.getModule().getGlobalVariable(Name, true);
@@ -4900,7 +4903,7 @@
     ProtocolRefs.push_back(GetProtocolRef(*begin));  // Implemented???
 
   // This list is null terminated.
-  ProtocolRefs.push_back(llvm::Constant::getNullValue(
+  ProtocolRefs.push_back(VMContext.getNullValue(
                                             ObjCTypes.ProtocolnfABIPtrTy));
   
   std::vector<llvm::Constant*> Values(2);
@@ -4937,7 +4940,7 @@
                                            ObjCTypes.SelectorPtrTy);
   Desc[1] = GetMethodVarType(MD);
   // Protocol methods have no implementation. So, this entry is always NULL.
-  Desc[2] = llvm::Constant::getNullValue(ObjCTypes.Int8PtrTy);
+  Desc[2] = VMContext.getNullValue(ObjCTypes.Int8PtrTy);
   return llvm::ConstantStruct::get(ObjCTypes.MethodTy, Desc);
 }
 
@@ -5439,7 +5442,7 @@
         // catch(...) always matches.
         if (!CatchDecl) {
           // Use i8* null here to signal this is a catch all, not a cleanup.
-          llvm::Value *Null = llvm::Constant::getNullValue(ObjCTypes.Int8PtrTy);
+          llvm::Value *Null = VMContext.getNullValue(ObjCTypes.Int8PtrTy);
           SelectorArgs.push_back(Null);
           HasCatchAll = true;
           break;