diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2009-07-02 18:26:15 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-07-02 18:26:15 +0000 |
| commit | 9fa077c6263be3379eb7650dbec02feb6395330c (patch) | |
| tree | ec9350d7c863e7a6acbabb0093f331b0352e1d32 /clang/lib/AST | |
| parent | df67d426d9cd967a1a2a89610fd4b8d719a78a48 (diff) | |
| download | bcm5719-llvm-9fa077c6263be3379eb7650dbec02feb6395330c.tar.gz bcm5719-llvm-9fa077c6263be3379eb7650dbec02feb6395330c.zip | |
Patch to allocate list of bases in CXXRecordDecl
using ASTContxt allocation.
llvm-svn: 74717
Diffstat (limited to 'clang/lib/AST')
| -rw-r--r-- | clang/lib/AST/DeclCXX.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index 9bdf07b29e5..b8b29528066 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -44,11 +44,16 @@ CXXRecordDecl *CXXRecordDecl::Create(ASTContext &C, TagKind TK, DeclContext *DC, } CXXRecordDecl::~CXXRecordDecl() { - delete [] Bases; +} + +void CXXRecordDecl::Destroy(ASTContext &C) { + C.Deallocate(Bases); + this->RecordDecl::Destroy(C); } void -CXXRecordDecl::setBases(CXXBaseSpecifier const * const *Bases, +CXXRecordDecl::setBases(ASTContext &C, + CXXBaseSpecifier const * const *Bases, unsigned NumBases) { // C++ [dcl.init.aggr]p1: // An aggregate is an array or a class (clause 9) with [...] @@ -56,10 +61,9 @@ CXXRecordDecl::setBases(CXXBaseSpecifier const * const *Bases, Aggregate = false; if (this->Bases) - delete [] this->Bases; + C.Deallocate(this->Bases); - // FIXME: allocate using the ASTContext - this->Bases = new CXXBaseSpecifier[NumBases]; + this->Bases = new(C) CXXBaseSpecifier [NumBases]; this->NumBases = NumBases; for (unsigned i = 0; i < NumBases; ++i) this->Bases[i] = *Bases[i]; |

