forked from OSchip/llvm-project
Workaround a performance issue with modules + PCH
More fallout from r228234; when looking up an identifier in a PCH that imports the Cocoa module on Darwin, it was taking 2 to 5 seconds because we were hammering the MapVector::erase() function, which is O(n). For now, just clear() the contained SmallVector to get back to 0.25 - 0.5 seconds. This is probably not the long-term fix, because without modules or without PCH the performance is more like 0.02 seconds. llvm-svn: 234655
This commit is contained in:
parent
b4bf14ceaa
commit
eb8bd2d9b3
|
@ -8668,7 +8668,10 @@ void ASTReader::pushExternalDeclIntoScope(NamedDecl *D, DeclarationName Name) {
|
|||
if (It != PendingFakeLookupResults.end()) {
|
||||
for (auto *ND : PendingFakeLookupResults[II])
|
||||
SemaObj->IdResolver.RemoveDecl(ND);
|
||||
PendingFakeLookupResults.erase(It);
|
||||
// FIXME: this works around module+PCH performance issue.
|
||||
// Rather than erase the result from the map, which is O(n), just clear
|
||||
// the vector of NamedDecls.
|
||||
It->second.clear();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue