diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2014-01-08 19:13:34 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2014-01-08 19:13:34 +0000 |
commit | 9308f0ae80f31fa8039b3d98d03f189d407d2faf (patch) | |
tree | e724e5308487cc3c44a7186746c20666dfbf912a /clang/lib/Serialization/ASTReader.cpp | |
parent | fb4d390766765f32a7c0cf886003fb68179276d6 (diff) | |
download | bcm5719-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.cpp | 5 |
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(); } |