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