summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/DeclCXX.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/AST/DeclCXX.cpp')
-rw-r--r--clang/lib/AST/DeclCXX.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp
index 22b485a904b..32e64b6e4ec 100644
--- a/clang/lib/AST/DeclCXX.cpp
+++ b/clang/lib/AST/DeclCXX.cpp
@@ -135,13 +135,14 @@ CXXRecordDecl::CreateDeserialized(const ASTContext &C, unsigned ID) {
}
void
-CXXRecordDecl::setBases(ArrayRef<const CXXBaseSpecifier *> Bases) {
+CXXRecordDecl::setBases(CXXBaseSpecifier const * const *Bases,
+ unsigned NumBases) {
ASTContext &C = getASTContext();
if (!data().Bases.isOffset() && data().NumBases > 0)
C.Deallocate(data().getBases());
- if (!Bases.empty()) {
+ if (NumBases) {
// C++ [dcl.init.aggr]p1:
// An aggregate is [...] a class with [...] no base classes [...].
data().Aggregate = false;
@@ -157,9 +158,9 @@ CXXRecordDecl::setBases(ArrayRef<const CXXBaseSpecifier *> Bases) {
// The virtual bases of this class.
SmallVector<const CXXBaseSpecifier *, 8> VBases;
- data().Bases = new(C) CXXBaseSpecifier [Bases.size()];
- data().NumBases = Bases.size();
- for (unsigned i = 0; i < Bases.size(); ++i) {
+ data().Bases = new(C) CXXBaseSpecifier [NumBases];
+ data().NumBases = NumBases;
+ for (unsigned i = 0; i < NumBases; ++i) {
data().getBases()[i] = *Bases[i];
// Keep track of inherited vbases for this base class.
const CXXBaseSpecifier *Base = Bases[i];
OpenPOWER on IntegriCloud