diff options
| author | Ted Kremenek <kremenek@apple.com> | 2010-03-08 20:56:29 +0000 | 
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2010-03-08 20:56:29 +0000 | 
| commit | c3015a914fc8558ddfcd5e7c581808c5c8eae6cf (patch) | |
| tree | 59a1414347c2bb8d9f77b4e60f8b2fd81b090b01 /clang/lib/AST/RecordLayoutBuilder.cpp | |
| parent | d3cbaa1ddfa4f3a07b90ac87dff54e0bb9f06927 (diff) | |
| download | bcm5719-llvm-c3015a914fc8558ddfcd5e7c581808c5c8eae6cf.tar.gz bcm5719-llvm-c3015a914fc8558ddfcd5e7c581808c5c8eae6cf.zip | |
Allocate ASTRecordLayout objects using the allocator associated with ASTContext.
This allows them to be allocated using a BumpPtrAllocated
in the common case.
llvm-svn: 97978
Diffstat (limited to 'clang/lib/AST/RecordLayoutBuilder.cpp')
| -rw-r--r-- | clang/lib/AST/RecordLayoutBuilder.cpp | 35 | 
1 files changed, 18 insertions, 17 deletions
| diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp index 10c5089f225..22285ca4203 100644 --- a/clang/lib/AST/RecordLayoutBuilder.cpp +++ b/clang/lib/AST/RecordLayoutBuilder.cpp @@ -675,9 +675,10 @@ ASTRecordLayoutBuilder::ComputeLayout(ASTContext &Ctx,    Builder.Layout(D);    if (!isa<CXXRecordDecl>(D)) -    return new ASTRecordLayout(Builder.Size, Builder.Alignment, Builder.Size, -                               Builder.FieldOffsets.data(), -                               Builder.FieldOffsets.size()); +    return new (Ctx) ASTRecordLayout(Ctx, Builder.Size, Builder.Alignment, +                                     Builder.Size, +                                     Builder.FieldOffsets.data(), +                                     Builder.FieldOffsets.size());    // FIXME: This is not always correct. See the part about bitfields at    // http://www.codesourcery.com/public/cxx-abi/abi.html#POD for more info. @@ -690,16 +691,16 @@ ASTRecordLayoutBuilder::ComputeLayout(ASTContext &Ctx,    uint64_t NonVirtualSize =      IsPODForThePurposeOfLayout ? DataSize : Builder.NonVirtualSize; -  return new ASTRecordLayout(Builder.Size, Builder.Alignment, DataSize, -                             Builder.FieldOffsets.data(), -                             Builder.FieldOffsets.size(), -                             NonVirtualSize, -                             Builder.NonVirtualAlignment, -                             Builder.PrimaryBase, -                             Builder.Bases.data(), -                             Builder.Bases.size(), -                             Builder.VBases.data(), -                             Builder.VBases.size()); +  return new (Ctx) ASTRecordLayout(Ctx, Builder.Size, Builder.Alignment, +                                   DataSize, Builder.FieldOffsets.data(), +                                   Builder.FieldOffsets.size(), +                                   NonVirtualSize, +                                   Builder.NonVirtualAlignment, +                                   Builder.PrimaryBase, +                                   Builder.Bases.data(), +                                   Builder.Bases.size(), +                                   Builder.VBases.data(), +                                   Builder.VBases.size());  }  const ASTRecordLayout * @@ -710,10 +711,10 @@ ASTRecordLayoutBuilder::ComputeLayout(ASTContext &Ctx,    Builder.Layout(D, Impl); -  return new ASTRecordLayout(Builder.Size, Builder.Alignment, -                             Builder.DataSize, -                             Builder.FieldOffsets.data(), -                             Builder.FieldOffsets.size()); +  return new (Ctx) ASTRecordLayout(Ctx, Builder.Size, Builder.Alignment, +                                   Builder.DataSize, +                                   Builder.FieldOffsets.data(), +                                   Builder.FieldOffsets.size());  }  const CXXMethodDecl * | 

