summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTReader.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2016-05-06 23:14:07 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2016-05-06 23:14:07 +0000
commit10379099245114a34f305f697e089422b47598fe (patch)
tree2bb8b8d66264808c61c3776ab53c0138737abc79 /clang/lib/Serialization/ASTReader.cpp
parent85338cbdb63215abefa45d51fe7e5f4f913a6ba4 (diff)
downloadbcm5719-llvm-10379099245114a34f305f697e089422b47598fe.tar.gz
bcm5719-llvm-10379099245114a34f305f697e089422b47598fe.zip
[modules] Attempt to improve performance for declaration merging without a Sema
object in C. Rather than using the DeclContext (which is very slow because it triggers us to build a lookup table for the DeclContext), use a separate map from identifiers to decls for this case, containing only the ones we've actually deserialized. For convenience, this map is implemented as an IdentifierResolver. llvm-svn: 268817
Diffstat (limited to 'clang/lib/Serialization/ASTReader.cpp')
-rw-r--r--clang/lib/Serialization/ASTReader.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index e33cccbd95c..5d459ac9fb6 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -8695,6 +8695,7 @@ ASTReader::ASTReader(
FileMgr(PP.getFileManager()), PCHContainerRdr(PCHContainerRdr),
Diags(PP.getDiagnostics()), SemaObj(nullptr), PP(PP), Context(Context),
Consumer(nullptr), ModuleMgr(PP.getFileManager(), PCHContainerRdr),
+ DummyIdResolver(PP),
ReadTimer(std::move(ReadTimer)),
PragmaMSStructState(-1),
PragmaMSPointersToMembersState(-1),
@@ -8733,3 +8734,7 @@ ASTReader::~ASTReader() {
if (OwnsDeserializationListener)
delete DeserializationListener;
}
+
+IdentifierResolver &ASTReader::getIdResolver() {
+ return SemaObj ? SemaObj->IdResolver : DummyIdResolver;
+}
OpenPOWER on IntegriCloud