aboutsummaryrefslogtreecommitdiffstats
path: root/dist
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2017-02-28 13:53:41 +0100
committerNikolai Kosjar <nikolai.kosjar@qt.io>2017-03-08 10:38:39 +0000
commit6508956d155d5c9f351ce9d0513475f50327af5e (patch)
tree29ef7e3cdb4e4f9eda710c3eeed3f9b4ed39d312 /dist
parentc35b0ff78190d7a3b51977a7f8f0cd9ce6b77cd4 (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.patch25
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;