diff options
author | Chris Lattner <sabre@nondot.org> | 2009-02-19 07:05:16 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-02-19 07:05:16 +0000 |
commit | f82328852c80a51b36a146de6ef5fd5b15e72c37 (patch) | |
tree | ac679c26380065c832438f11e951795cd66d869f /lib/AST/DeclBase.cpp | |
parent | ba1bd5c54d941d682ac7e946a51604f05cf470e7 (diff) |
only do one DenseMap lookup instead of two (one to find out if there is
already an entry and one to insert).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65030 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/DeclBase.cpp')
-rw-r--r-- | lib/AST/DeclBase.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/lib/AST/DeclBase.cpp b/lib/AST/DeclBase.cpp index c03c36048a..d244637af7 100644 --- a/lib/AST/DeclBase.cpp +++ b/lib/AST/DeclBase.cpp @@ -561,19 +561,19 @@ void DeclContext::makeDeclVisibleInContextImpl(NamedDecl *D) { // Insert this declaration into the map. StoredDeclsMap *Map = static_cast<StoredDeclsMap*>(LookupPtr.getPointer()); - StoredDeclsMap::iterator Pos = Map->find(D->getDeclName()); - if (Pos == Map->end()) { - (*Map)[D->getDeclName()].push_back(D); + std::vector<NamedDecl *> &DeclNameEntries = (*Map)[D->getDeclName()]; + if (DeclNameEntries.empty()) { + DeclNameEntries.push_back(D); return; } if (MayBeRedeclaration) { // Determine if this declaration is actually a redeclaration. std::vector<NamedDecl *>::iterator Redecl - = std::find_if(Pos->second.begin(), Pos->second.end(), + = std::find_if(DeclNameEntries.begin(), DeclNameEntries.end(), std::bind1st(std::mem_fun(&NamedDecl::declarationReplaces), D)); - if (Redecl != Pos->second.end()) { + if (Redecl != DeclNameEntries.end()) { *Redecl = D; return; } @@ -582,14 +582,14 @@ void DeclContext::makeDeclVisibleInContextImpl(NamedDecl *D) { // Put this declaration into the appropriate slot. if (isa<UsingDirectiveDecl>(D) || D->getIdentifierNamespace() == Decl::IDNS_Tag || - Pos->second.empty()) - Pos->second.push_back(D); - else if (Pos->second.back()->getIdentifierNamespace() == Decl::IDNS_Tag) { - NamedDecl *TagD = Pos->second.back(); - Pos->second.back() = D; - Pos->second.push_back(TagD); + DeclNameEntries.empty()) + DeclNameEntries.push_back(D); + else if (DeclNameEntries.back()->getIdentifierNamespace() == Decl::IDNS_Tag) { + NamedDecl *TagD = DeclNameEntries.back(); + DeclNameEntries.back() = D; + DeclNameEntries.push_back(TagD); } else - Pos->second.push_back(D); + DeclNameEntries.push_back(D); } /// Returns iterator range [First, Last) of UsingDirectiveDecls stored within |