Added ObjCAtDefsFieldDecl to represent FieldDecls created by @defs.
This fixes an ownership issue where FieldDecls could be owned both by an ObjCInterfaceDecl and a RecordDecl.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@55037 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/DeclObjC.cpp b/lib/AST/DeclObjC.cpp
index a793ac6..bd8b874 100644
--- a/lib/AST/DeclObjC.cpp
+++ b/lib/AST/DeclObjC.cpp
@@ -94,6 +94,19 @@
   return new (Mem) ObjCIvarDecl(L, Id, T, ac, BW);
 }
 
+
+ObjCAtDefsFieldDecl
+*ObjCAtDefsFieldDecl::Create(ASTContext &C, SourceLocation L,
+                             IdentifierInfo *Id, QualType T, Expr *BW) {
+  void *Mem = C.getAllocator().Allocate<ObjCAtDefsFieldDecl>();
+  return new (Mem) ObjCAtDefsFieldDecl(L, Id, T, BW);
+}
+
+void ObjCAtDefsFieldDecl::Destroy(ASTContext& C) {
+  this->~ObjCAtDefsFieldDecl();
+  C.getAllocator().Deallocate((void *)this); 
+}
+
 ObjCProtocolDecl *ObjCProtocolDecl::Create(ASTContext &C,
                                            SourceLocation L, 
                                            IdentifierInfo *Id) {