diff options
author | Eike Ziller <eike.ziller@qt.io> | 2017-02-28 13:53:41 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-03-08 10:38:39 +0000 |
commit | 6508956d155d5c9f351ce9d0513475f50327af5e (patch) | |
tree | 29ef7e3cdb4e4f9eda710c3eeed3f9b4ed39d312 /dist | |
parent | c35b0ff78190d7a3b51977a7f8f0cd9ce6b77cd4 (diff) |
Clang: Add patch against very slow reparsing of large files
Task-number: QTCREATORBUG-17397
Change-Id: I3734b77341ca2c7fd87b0f8e5d1502b859de7692
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'dist')
-rw-r--r-- | dist/clang/patches/D29755_Cache-FileID-when-translating-diagnostics-in-PCH-files.patch | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/dist/clang/patches/D29755_Cache-FileID-when-translating-diagnostics-in-PCH-files.patch b/dist/clang/patches/D29755_Cache-FileID-when-translating-diagnostics-in-PCH-files.patch new file mode 100644 index 0000000000..41e7c1d2c3 --- /dev/null +++ b/dist/clang/patches/D29755_Cache-FileID-when-translating-diagnostics-in-PCH-files.patch @@ -0,0 +1,25 @@ +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<StoredDiagnostic, 4> 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; |