diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-02-07 03:30:24 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2013-02-07 03:30:24 +0000 |
commit | 9ce12e36abf44b6373b88610f3c73fbbbdee9b36 (patch) | |
tree | 252cae5664a20d1ce68c51dc63bf82c4d0dd5ce2 /clang/lib/Sema/MultiplexExternalSemaSource.cpp | |
parent | c121b9b796e40f2eec2aabebb4dfcabe2f21537f (diff) | |
download | bcm5719-llvm-9ce12e36abf44b6373b88610f3c73fbbbdee9b36.tar.gz bcm5719-llvm-9ce12e36abf44b6373b88610f3c73fbbbdee9b36.zip |
Simplify FindExternalVisibleDeclsByName by making it return a bool indicating
if it found any decls, rather than returning a list of found decls. This
removes a returning-ArrayRef-to-deleted-storage bug from
MultiplexExternalSemaSource (in code not exercised by any of the clang
binaries), reduces the work required in the found-no-decls case with PCH, and
importantly removes the need for DeclContext::lookup to be reentrant.
No functionality change intended!
llvm-svn: 174576
Diffstat (limited to 'clang/lib/Sema/MultiplexExternalSemaSource.cpp')
-rw-r--r-- | clang/lib/Sema/MultiplexExternalSemaSource.cpp | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/clang/lib/Sema/MultiplexExternalSemaSource.cpp b/clang/lib/Sema/MultiplexExternalSemaSource.cpp index ecce6d8e7bb..d85624ba6f6 100644 --- a/clang/lib/Sema/MultiplexExternalSemaSource.cpp +++ b/clang/lib/Sema/MultiplexExternalSemaSource.cpp @@ -81,19 +81,12 @@ CXXBaseSpecifier *MultiplexExternalSemaSource::GetExternalCXXBaseSpecifiers( return 0; } -DeclContextLookupResult MultiplexExternalSemaSource:: +bool MultiplexExternalSemaSource:: FindExternalVisibleDeclsByName(const DeclContext *DC, DeclarationName Name) { - StoredDeclsList DeclsFound; - for(size_t i = 0; i < Sources.size(); ++i) { - DeclContext::lookup_result R = - Sources[i]->FindExternalVisibleDeclsByName(DC, Name); - for (DeclContext::lookup_iterator I = R.begin(), E = R.end(); I != E; - ++I) { - if (!DeclsFound.HandleRedeclaration(*I)) - DeclsFound.AddSubsequentDecl(*I); - } - } - return DeclsFound.getLookupResult(); + bool AnyDeclsFound = false; + for (size_t i = 0; i < Sources.size(); ++i) + AnyDeclsFound |= Sources[i]->FindExternalVisibleDeclsByName(DC, Name); + return AnyDeclsFound; } void MultiplexExternalSemaSource::completeVisibleDeclsMap(const DeclContext *DC){ |