diff --git a/tools/clang/lib/Frontend/ASTUnit.cpp b/tools/clang/lib/Frontend/ASTUnit.cpp index d892996..5148a8b 100644 --- a/tools/clang/lib/Frontend/ASTUnit.cpp +++ b/tools/clang/lib/Frontend/ASTUnit.cpp @@ -2534,6 +2534,8 @@ void ASTUnit::TranslateStoredDiagnostics( SmallVector Result; Result.reserve(Diags.size()); + const FileEntry *PreviousFE = nullptr; + FileID FID; for (const StandaloneDiagnostic &SD : Diags) { // Rebuild the StoredDiagnostic. if (SD.Filename.empty()) @@ -2541,7 +2543,10 @@ void ASTUnit::TranslateStoredDiagnostics( const FileEntry *FE = FileMgr.getFile(SD.Filename); if (!FE) continue; - FileID FID = SrcMgr.translateFile(FE); + if (FE != PreviousFE) { + FID = SrcMgr.translateFile(FE); + PreviousFE = FE; + } SourceLocation FileLoc = SrcMgr.getLocForStartOfFile(FID); if (FileLoc.isInvalid()) continue;