diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2011-07-12 23:49:11 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2011-07-12 23:49:11 +0000 |
commit | 26935e60b6fc2072bca8ab0c6abb3325b4cb6701 (patch) | |
tree | c9552c68f27d56cda7bb3aee01be642ffb96b307 /clang/lib/AST | |
parent | c87c8799ec32a21dfb30992d3ab92f1feb2415a8 (diff) | |
download | bcm5719-llvm-26935e60b6fc2072bca8ab0c6abb3325b4cb6701.tar.gz bcm5719-llvm-26935e60b6fc2072bca8ab0c6abb3325b4cb6701.zip |
Correctly set up the list of virtual base classes for a CXXRecordDecl. Previously we got the source range wrong for everything in the virtual bases list.
llvm-svn: 135011
Diffstat (limited to 'clang/lib/AST')
-rw-r--r-- | clang/lib/AST/DeclCXX.cpp | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index c10e6c40d39..4b59bf37d74 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -244,22 +244,8 @@ CXXRecordDecl::setBases(CXXBaseSpecifier const * const *Bases, // Create base specifier for any direct or indirect virtual bases. data().VBases = new (C) CXXBaseSpecifier[VBases.size()]; data().NumVBases = VBases.size(); - for (int I = 0, E = VBases.size(); I != E; ++I) { - TypeSourceInfo *VBaseTypeInfo = VBases[I]->getTypeSourceInfo(); - - // Skip dependent types; we can't do any checking on them now. - if (VBaseTypeInfo->getType()->isDependentType()) - continue; - - CXXRecordDecl *VBaseClassDecl = cast<CXXRecordDecl>( - VBaseTypeInfo->getType()->getAs<RecordType>()->getDecl()); - - data().getVBases()[I] = - CXXBaseSpecifier(VBaseClassDecl->getSourceRange(), true, - VBaseClassDecl->getTagKind() == TTK_Class, - VBases[I]->getAccessSpecifier(), VBaseTypeInfo, - SourceLocation()); - } + for (int I = 0, E = VBases.size(); I != E; ++I) + data().getVBases()[I] = *VBases[I]; } /// Callback function for CXXRecordDecl::forallBases that acknowledges |