summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization/ASTReader.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2014-01-08 19:13:34 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2014-01-08 19:13:34 +0000
commit9308f0ae80f31fa8039b3d98d03f189d407d2faf (patch)
treee724e5308487cc3c44a7186746c20666dfbf912a /clang/lib/Serialization/ASTReader.cpp
parentfb4d390766765f32a7c0cf886003fb68179276d6 (diff)
downloadbcm5719-llvm-9308f0ae80f31fa8039b3d98d03f189d407d2faf.tar.gz
bcm5719-llvm-9308f0ae80f31fa8039b3d98d03f189d407d2faf.zip
[Serialization] In ASTReader::getInputFile record it when we didn't find the file to avoid looking it up again.
Hopefully addresses rdar://14514222. llvm-svn: 198781
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 c531134a974..400619f63ab 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -1643,6 +1643,9 @@ InputFile ASTReader::getInputFile(ModuleFile &F, unsigned ID, bool Complain) {
if (F.InputFilesLoaded[ID-1].getFile())
return F.InputFilesLoaded[ID-1];
+ if (F.InputFilesLoaded[ID-1].isNotFound())
+ return InputFile();
+
// Go find this input file.
BitstreamCursor &Cursor = F.InputFilesCursor;
SavedStreamPosition SavedPosition(Cursor);
@@ -1692,6 +1695,8 @@ InputFile ASTReader::getInputFile(ModuleFile &F, unsigned ID, bool Complain) {
ErrorStr += "' referenced by AST file";
Error(ErrorStr.c_str());
}
+ // Record that we didn't find the file.
+ F.InputFilesLoaded[ID-1] = InputFile::getNotFound();
return InputFile();
}
OpenPOWER on IntegriCloud