Allocate BaseOrMemberInitializers and CXXBaseSpecifier nodes
via ASTContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@76758 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/DeclCXX.cpp b/lib/AST/DeclCXX.cpp
index 7ba2394..af54fb0 100644
--- a/lib/AST/DeclCXX.cpp
+++ b/lib/AST/DeclCXX.cpp
@@ -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);
       }      
     }