[cfe-commits] r152033 - /cfe/trunk/lib/Sema/SemaDeclCXX.cpp
Benjamin Kramer
benny.kra at googlemail.com
Mon Mar 5 09:20:04 PST 2012
Author: d0k
Date: Mon Mar 5 11:20:04 2012
New Revision: 152033
URL: http://llvm.org/viewvc/llvm-project?rev=152033&view=rev
Log:
Avoid double lookup.
Modified:
cfe/trunk/lib/Sema/SemaDeclCXX.cpp
Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=152033&r1=152032&r2=152033&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Mon Mar 5 11:20:04 2012
@@ -1128,13 +1128,15 @@
QualType NewBaseType
= Context.getCanonicalType(Bases[idx]->getType());
NewBaseType = NewBaseType.getLocalUnqualifiedType();
- if (KnownBaseTypes[NewBaseType]) {
+
+ CXXBaseSpecifier *&KnownBase = KnownBaseTypes[NewBaseType];
+ if (KnownBase) {
// C++ [class.mi]p3:
// A class shall not be specified as a direct base class of a
// derived class more than once.
Diag(Bases[idx]->getSourceRange().getBegin(),
diag::err_duplicate_base_class)
- << KnownBaseTypes[NewBaseType]->getType()
+ << KnownBase->getType()
<< Bases[idx]->getSourceRange();
// Delete the duplicate base class specifier; we're going to
@@ -1144,7 +1146,7 @@
Invalid = true;
} else {
// Okay, add this new base class.
- KnownBaseTypes[NewBaseType] = Bases[idx];
+ KnownBase = Bases[idx];
Bases[NumGoodBases++] = Bases[idx];
if (const RecordType *Record = NewBaseType->getAs<RecordType>())
if (const CXXRecordDecl *RD = cast<CXXRecordDecl>(Record->getDecl()))
More information about the cfe-commits
mailing list