Index: cfe/trunk/lib/Frontend/ASTUnit.cpp =================================================================== --- cfe/trunk/lib/Frontend/ASTUnit.cpp +++ cfe/trunk/lib/Frontend/ASTUnit.cpp @@ -2541,6 +2541,8 @@ SmallVector Result; Result.reserve(Diags.size()); + const FileEntry *PreviousFE = nullptr; + FileID FID; for (const StandaloneDiagnostic &SD : Diags) { // Rebuild the StoredDiagnostic. if (SD.Filename.empty()) @@ -2548,7 +2550,10 @@ 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;