]> granicus.if.org Git - clang/commitdiff
Remove ASTContext::addRecordToClass.
authorDaniel Dunbar <daniel@zuster.org>
Sun, 3 May 2009 14:27:48 +0000 (14:27 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Sun, 3 May 2009 14:27:48 +0000 (14:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70780 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ASTContext.h
include/clang/AST/RecordLayout.h
lib/AST/ASTContext.cpp

index 18ea40b1e97480727b3b41b09a704f713ef87eb6..4c80baa2c8f820abe1b8f5714f8a8003a61d12d0 100644 (file)
@@ -97,10 +97,6 @@ class ASTContext {
 
   llvm::DenseMap<unsigned, FixedWidthIntType*> SignedFixedWidthIntTypes;
   llvm::DenseMap<unsigned, FixedWidthIntType*> UnsignedFixedWidthIntTypes;
-
-  // FIXME: ASTRecordForInterface/ASTFieldForIvarRef and addRecordToClass and
-  // getFieldDecl be part of the backend (i.e. CodeGenTypes)?
-  llvm::DenseMap<const ObjCInterfaceDecl*, RecordDecl*> ASTRecordForInterface;
   
   /// BuiltinVaListType - built-in va list type.
   /// This is initially null and set by Sema::LazilyCreateBuiltin when
@@ -539,7 +535,6 @@ public:
   const ASTRecordLayout &
   getASTObjCImplementationLayout(const ObjCImplementationDecl *D);
 
-  const RecordDecl *addRecordToClass(const ObjCInterfaceDecl *D);
   void CollectObjCIvars(const ObjCInterfaceDecl *OI,
                         llvm::SmallVectorImpl<FieldDecl*> &Fields);
 
index a8b49fb2df00197214db22b7938892ef3f017bf0..c68edfaf71888dfcb1e24c7db17fb5b0406a5745 100644 (file)
@@ -24,7 +24,7 @@ namespace clang {
 /// This class contains layout information for one RecordDecl,
 /// which is a struct/union/class.  The decl represented must be a definition,
 /// not a forward declaration.  
-/// This class is also used to contain layout informaiton for one 
+/// This class is also used to contain layout information for one 
 /// ObjCInterfaceDecl. FIXME - Find appropriate name.
 /// These objects are managed by ASTContext.
 class ASTRecordLayout {
index ac70cef499b42092c790f7b479558af4cff16ce5..0ef672768d05b07bf1ac30f7b52aade9bcaac14a 100644 (file)
@@ -71,15 +71,6 @@ ASTContext::~ASTContext() {
     }
   }
 
-  {
-    llvm::DenseMap<const ObjCInterfaceDecl*, RecordDecl*>::iterator
-      I = ASTRecordForInterface.begin(), E = ASTRecordForInterface.end();
-    while (I != E) {
-      RecordDecl *R = (I++)->second;
-      R->Destroy(*this);
-    }
-  }
-
   // Destroy nested-name-specifiers.
   for (llvm::FoldingSet<NestedNameSpecifier>::iterator
          NNS = NestedNameSpecifiers.begin(),
@@ -676,7 +667,10 @@ static void CollectLocalObjCIvars(ASTContext *Ctx,
     if (!IVDecl->isInvalidDecl())
       Fields.push_back(cast<FieldDecl>(IVDecl));
   }
-  // look into properties.
+  // Look into properties.
+  //
+  // FIXME: This needs to go away, synthesized ivars shouldn't be
+  // accessible from the interface decl.
   for (ObjCInterfaceDecl::prop_iterator I = OI->prop_begin(*Ctx),
        E = OI->prop_end(*Ctx); I != E; ++I) {
     if (ObjCIvarDecl *IV = (*I)->getPropertyIvarDecl())
@@ -691,51 +685,6 @@ void ASTContext::CollectObjCIvars(const ObjCInterfaceDecl *OI,
   CollectLocalObjCIvars(this, OI, Fields);
 }
 
-/// addRecordToClass - produces record info. for the class for its
-/// ivars and all those inherited.
-///
-const RecordDecl *ASTContext::addRecordToClass(const ObjCInterfaceDecl *D) {
-  assert(!D->isForwardDecl() && "Invalid decl!");
-
-  RecordDecl *&RD = ASTRecordForInterface[D];
-  if (RD)
-    return RD;
-  
-  llvm::SmallVector<FieldDecl*, 32> RecFields;
-  CollectLocalObjCIvars(this, D, RecFields);
-  
-  RD = RecordDecl::Create(*this, TagDecl::TK_struct, 0, D->getLocation(),
-                          D->getIdentifier());
-  const RecordDecl *SRD;
-  if (const ObjCInterfaceDecl *SuperClass = D->getSuperClass()) {
-    SRD = addRecordToClass(SuperClass);
-  } else {
-    SRD = RecordDecl::Create(*this, TagDecl::TK_struct, 0, SourceLocation(), 0);
-    const_cast<RecordDecl*>(SRD)->completeDefinition(*this);
-  }
-
-  RD->addDecl(*this, 
-              FieldDecl::Create(*this, RD,
-                                SourceLocation(),
-                                0,
-                                getTagDeclType(const_cast<RecordDecl*>(SRD)),
-                                0, false));
-
-  /// FIXME! Can do collection of ivars and adding to the record while
-  /// doing it.
-  for (unsigned i = 0, e = RecFields.size(); i != e; ++i) {
-    RD->addDecl(*this,
-                FieldDecl::Create(*this, RD, 
-                                  RecFields[i]->getLocation(), 
-                                  RecFields[i]->getIdentifier(),
-                                  RecFields[i]->getType(), 
-                                  RecFields[i]->getBitWidth(), false));
-  }
-  
-  RD->completeDefinition(*this);
-  return RD;
-}
-
 /// getInterfaceLayoutImpl - Get or compute information about the
 /// layout of the given interface.
 ///