On Thu, Feb 23, 2012 at 7:18 AM, Benjamin Kramer <[email protected]> wrote: > Author: d0k > Date: Thu Feb 23 09:18:31 2012 > New Revision: 151255 > > URL: http://llvm.org/viewvc/llvm-project?rev=151255&view=rev > Log: > Unique CXXBasePath decls with the SmallVector/pod_sort/std::unique idiom > instead of employing a wasteful std::set. > > Modified: > cfe/trunk/lib/AST/CXXInheritance.cpp > > Modified: cfe/trunk/lib/AST/CXXInheritance.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/CXXInheritance.cpp?rev=151255&r1=151254&r2=151255&view=diff > ============================================================================== > --- cfe/trunk/lib/AST/CXXInheritance.cpp (original) > +++ cfe/trunk/lib/AST/CXXInheritance.cpp Thu Feb 23 09:18:31 2012 > @@ -23,12 +23,15 @@ > void CXXBasePaths::ComputeDeclsFound() { > assert(NumDeclsFound == 0 && !DeclsFound && > "Already computed the set of declarations"); > - > - std::set<NamedDecl *> Decls; > - for (CXXBasePaths::paths_iterator Path = begin(), PathEnd = end(); > - Path != PathEnd; ++Path) > - Decls.insert(*Path->Decls.first); > - > + > + SmallVector<NamedDecl *, 8> Decls; > + for (paths_iterator Path = begin(), PathEnd = end(); Path != PathEnd; > ++Path) > + Decls.push_back(*Path->Decls.first); > + > + // Eliminate duplicated decls. > + llvm::array_pod_sort(Decls.begin(), Decls.end()); > + std::unique(Decls.begin(), Decls.end());
Does this usage of std::unique actually do the right thing? You never actually shrink the SmallVector. -Eli _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
