[cfe-commits] r76758 - in /cfe/trunk/lib: AST/DeclCXX.cpp Sema/SemaDeclCXX.cpp Sema/SemaTemplateInstantiate.cpp

Fariborz Jahanian fjahanian at apple.com
Wed Jul 22 10:41:54 PDT 2009


Author: fjahanian
Date: Wed Jul 22 12:41:53 2009
New Revision: 76758

URL: http://llvm.org/viewvc/llvm-project?rev=76758&view=rev
Log:
Allocate BaseOrMemberInitializers and CXXBaseSpecifier nodes
via ASTContext.

Modified:
    cfe/trunk/lib/AST/DeclCXX.cpp
    cfe/trunk/lib/Sema/SemaDeclCXX.cpp
    cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp

Modified: cfe/trunk/lib/AST/DeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/DeclCXX.cpp?rev=76758&r1=76757&r2=76758&view=diff

==============================================================================
--- cfe/trunk/lib/AST/DeclCXX.cpp (original)
+++ cfe/trunk/lib/AST/DeclCXX.cpp Wed Jul 22 12:41:53 2009
@@ -51,6 +51,7 @@
 
 void CXXRecordDecl::Destroy(ASTContext &C) {
   C.Deallocate(Bases);
+  C.Deallocate(VBases);
   this->RecordDecl::Destroy(C);
 }
 
@@ -129,7 +130,7 @@
       CXXRecordDecl *VBaseClassDecl
         = cast<CXXRecordDecl>(QT->getAsRecordType()->getDecl());
       this->VBases[i] = 
-        *new CXXBaseSpecifier(
+        *new (C) CXXBaseSpecifier(
                           VBaseClassDecl->getSourceRange(), true,
                           VBaseClassDecl->getTagKind() == RecordDecl::TK_class,
                           UniqueVbases[i]->getAccessSpecifier(), QT);
@@ -571,7 +572,8 @@
     }
     if (i == NumInitializers) {
       CXXBaseOrMemberInitializer *Member = 
-        new CXXBaseOrMemberInitializer(VBase->getType(), 0, 0,SourceLocation());
+        new (C) CXXBaseOrMemberInitializer(VBase->getType(), 0, 0,
+                                           SourceLocation());
       AllToInit.push_back(Member);
     }
   }
@@ -593,7 +595,8 @@
     }
     if (i == NumInitializers) {
       CXXBaseOrMemberInitializer *Member = 
-        new CXXBaseOrMemberInitializer(Base->getType(), 0, 0, SourceLocation());
+        new (C) CXXBaseOrMemberInitializer(Base->getType(), 0, 0, 
+                                           SourceLocation());
       AllToInit.push_back(Member);
     }
   }
@@ -615,7 +618,7 @@
       
       if (FieldType->getAsRecordType()) {
         CXXBaseOrMemberInitializer *Member = 
-          new CXXBaseOrMemberInitializer((*Field), 0, 0, SourceLocation());
+          new (C) CXXBaseOrMemberInitializer((*Field), 0, 0, SourceLocation());
           AllToInit.push_back(Member);
       }      
     }

Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=76758&r1=76757&r2=76758&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Wed Jul 22 12:41:53 2009
@@ -359,7 +359,7 @@
   }
 
   if (BaseType->isDependentType())
-    return new CXXBaseSpecifier(SpecifierRange, Virtual, 
+    return new (Context) CXXBaseSpecifier(SpecifierRange, Virtual, 
                                 Class->getTagKind() == RecordDecl::TK_class,
                                 Access, BaseType);
 
@@ -416,7 +416,7 @@
   
   // Create the base specifier.
   // FIXME: Allocate via ASTContext?
-  return new CXXBaseSpecifier(SpecifierRange, Virtual, 
+  return new (Context) CXXBaseSpecifier(SpecifierRange, Virtual, 
                               Class->getTagKind() == RecordDecl::TK_class, 
                               Access, BaseType);
 }
@@ -697,8 +697,8 @@
 
     if (Member) {
       // FIXME: Perform direct initialization of the member.
-      return new CXXBaseOrMemberInitializer(Member, (Expr **)Args, NumArgs, 
-                                            IdLoc);
+      return new (Context) CXXBaseOrMemberInitializer(Member, (Expr **)Args, 
+                                                      NumArgs, IdLoc);
     }
   }
   // It didn't name a member, so see if it names a class.
@@ -770,8 +770,8 @@
     << SourceRange(IdLoc, RParenLoc);
     
 
-  return new CXXBaseOrMemberInitializer(BaseType, (Expr **)Args, NumArgs, 
-                                        IdLoc);
+  return new (Context) CXXBaseOrMemberInitializer(BaseType, (Expr **)Args, 
+                                                  NumArgs, IdLoc);
 }
 
 static void *GetKeyForTopLevelField(FieldDecl *Field) {

Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp?rev=76758&r1=76757&r2=76758&view=diff

==============================================================================
--- cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp (original)
+++ cfe/trunk/lib/Sema/SemaTemplateInstantiate.cpp Wed Jul 22 12:41:53 2009
@@ -821,8 +821,7 @@
          Base = Pattern->bases_begin(), BaseEnd = Pattern->bases_end();
        Base != BaseEnd; ++Base) {
     if (!Base->getType()->isDependentType()) {
-      // FIXME: Allocate via ASTContext
-      InstantiatedBases.push_back(new CXXBaseSpecifier(*Base));
+      InstantiatedBases.push_back(new (Context) CXXBaseSpecifier(*Base));
       continue;
     }
 





More information about the cfe-commits mailing list