[clang] 592953b - [clang][Diagnostics] Only record lexer check points when colors are enabled (#204926)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 13 06:25:40 PDT 2026
Author: Anonmiraj
Date: 2026-07-13T16:25:35+03:00
New Revision: 592953beff733a1e28f6c6e5e39f948fb035a329
URL: https://github.com/llvm/llvm-project/commit/592953beff733a1e28f6c6e5e39f948fb035a329
DIFF: https://github.com/llvm/llvm-project/commit/592953beff733a1e28f6c6e5e39f948fb035a329.diff
LOG: [clang][Diagnostics] Only record lexer check points when colors are enabled (#204926)
Only build lexer check points when colored diagnostics are enabled,
since that's the only case where they're ever used,
This should reduce the cost on larger builds.
| Commit | Basket Ir | Delta |
|---|---|---|
| 863b2c84 (Parent) | 30,240,576,150 | — |
| 718aac9f (Commit) | 30,336,607,185 | +0.318% |
| **+ this pr** | **30,279,772,621** | **+0.130%** |
**synthetic error file (12.3k lines, 300 errors):**
| Build | Error-TU Ir (colors on) | Δ vs commit |
|---|---|---|
| 718aac9f (Commit) | 1,386,488,658 | — |
| **+ this pr** | **1,387,140,588** | **+0.05%** |
Resolves #203764
---------
Co-authored-by: Timm Baeder <tbaeder at redhat.com>
Added:
Modified:
clang/include/clang/Lex/Preprocessor.h
clang/lib/Lex/Preprocessor.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Lex/Preprocessor.h b/clang/include/clang/Lex/Preprocessor.h
index 413e80e7645f9..1c917dcfe7b7e 100644
--- a/clang/include/clang/Lex/Preprocessor.h
+++ b/clang/include/clang/Lex/Preprocessor.h
@@ -383,6 +383,9 @@ class Preprocessor {
llvm::DenseMap<FileID, SmallVector<const char *>> CheckPoints;
unsigned CheckPointCounter = 0;
+ /// Whether to record lexer check points for diagnostic snippet highlighting.
+ bool RecordCheckPoints = false;
+
/// Whether we're importing a standard C++20 named Modules.
bool ImportingCXXNamedModules = false;
diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp
index 1625d5918e8f5..5ee53a93732bb 100644
--- a/clang/lib/Lex/Preprocessor.cpp
+++ b/clang/lib/Lex/Preprocessor.cpp
@@ -102,6 +102,10 @@ Preprocessor::Preprocessor(const PreprocessorOptions &PPOpts,
CurSubmoduleState(&NullSubmoduleState) {
OwnsHeaderSearch = OwnsHeaders;
+ // Only record check points if we might highlight diagnostic snippets.
+ RecordCheckPoints = getDiagnostics().getDiagnosticOptions().getShowColors() !=
+ ShowColorsKind::Off;
+
// Default to discarding comments.
KeepComments = false;
KeepMacroComments = false;
@@ -1014,7 +1018,8 @@ void Preprocessor::Lex(Token &Result) {
}
}
- if (CurLexer && ++CheckPointCounter == CheckPointStepSize) {
+ if (RecordCheckPoints && CurLexer &&
+ ++CheckPointCounter == CheckPointStepSize) {
CheckPoints[CurLexer->getFileID()].push_back(CurLexer->BufferPtr);
CheckPointCounter = 0;
}
More information about the cfe-commits
mailing list