summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/MultiplexExternalSemaSource.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-02-07 03:30:24 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-02-07 03:30:24 +0000
commit9ce12e36abf44b6373b88610f3c73fbbbdee9b36 (patch)
tree252cae5664a20d1ce68c51dc63bf82c4d0dd5ce2 /clang/lib/Sema/MultiplexExternalSemaSource.cpp
parentc121b9b796e40f2eec2aabebb4dfcabe2f21537f (diff)
downloadbcm5719-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.cpp17
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){
OpenPOWER on IntegriCloud