Convert property implementation to DeclContext::addDecl().
This completes the ObjCContainerDecl AST cleanup (for now).


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62037 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp
index 637edf3..df4b2a1 100644
--- a/lib/CodeGen/CGObjCMac.cpp
+++ b/lib/CodeGen/CGObjCMac.cpp
@@ -341,9 +341,8 @@
   /// EmitPropertyList - Emit the given property list. The return
   /// value has type PropertyListPtrTy.
   llvm::Constant *EmitPropertyList(const std::string &Name,
-                                   const Decl *Container,
-                                   ObjCPropertyDecl * const *begin,
-                                   ObjCPropertyDecl * const *end);
+                                   const Decl *Container, 
+                                   const ObjCContainerDecl *OCD);
 
   /// GetOrEmitProtocol - Get the protocol object for the given
   /// declaration, emitting it if necessary. The return value has type
@@ -783,9 +782,7 @@
                        OptClassMethods);
   Values[3] = EmitPropertyList("\01L_OBJC_$_PROP_PROTO_LIST_" + 
                                    PD->getNameAsString(),
-                               0,
-                               PD->prop_begin(),
-                               PD->prop_end());
+                               0, PD);
 
   // Return null if no extension bits are used.
   if (Values[1]->isNullValue() && Values[2]->isNullValue() && 
@@ -863,11 +860,11 @@
 */
 llvm::Constant *CGObjCMac::EmitPropertyList(const std::string &Name,
                                             const Decl *Container,
-                                            ObjCPropertyDecl * const *begin,
-                                            ObjCPropertyDecl * const *end) {
+                                            const ObjCContainerDecl *OCD) {
   std::vector<llvm::Constant*> Properties, Prop(2);
-  for (; begin != end; ++begin) {
-    const ObjCPropertyDecl *PD = *begin;
+  for (ObjCContainerDecl::prop_iterator I = OCD->prop_begin(), 
+       E = OCD->prop_end(); I != E; ++I) {
+    const ObjCPropertyDecl *PD = *I;
     Prop[0] = GetPropertyName(PD->getIdentifier());
     Prop[1] = GetPropertyTypeString(PD, Container);
     Properties.push_back(llvm::ConstantStruct::get(ObjCTypes.PropertyTy,
@@ -1003,9 +1000,7 @@
   // If there is no category @interface then there can be no properties.
   if (Category) {
     Values[6] = EmitPropertyList(std::string("\01L_OBJC_$_PROP_LIST_") + ExtName,
-                                 OCD,
-                                 Category->prop_begin(),
-                                 Category->prop_end());
+                                 OCD, Category);
   } else {
     Values[6] = llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
   }
@@ -1280,9 +1275,7 @@
   // FIXME: Output weak_ivar_layout string.
   Values[1] = llvm::Constant::getNullValue(ObjCTypes.Int8PtrTy);
   Values[2] = EmitPropertyList("\01L_OBJC_$_PROP_LIST_" + ID->getNameAsString(),
-                               ID,
-                               ID->getClassInterface()->prop_begin(),
-                               ID->getClassInterface()->prop_end());
+                               ID, ID->getClassInterface());
 
   // Return null if no extension bits are used.
   if (Values[1]->isNullValue() && Values[2]->isNullValue())