From 011b65a893a965671ce451626adaca6d8c79b945 Mon Sep 17 00:00:00 2001 From: Silia Taider Date: Wed, 2 Sep 2026 14:53:08 +0200 Subject: [PATCH 1/2] Reapply "Store token literal data in PCH. Avoids disk read on PreProc expansion (ROOT-6794)." This reverts commit aa5d17cab726cd05ef6311c0c98f2b9a1dcccc93 which breaks the Python wheels. The wheel's PCH is built on `manylinux_2_28` (glibc 2.28) and run on the `ubuntu-latest` runner (glibc 2.39). The system headers are present but different enough that cling reads the wrong bytes, and the lexer desyncs such that we get failures of the sort: ``` /usr/include/assert.h:37: error: failure when lexing a numeric literal ``` --- .../clang/include/clang/Serialization/ASTReader.h | 3 +++ .../clang/lib/Serialization/ASTReader.cpp | 11 +++++++++++ .../clang/lib/Serialization/ASTWriter.cpp | 3 +++ 3 files changed, 17 insertions(+) diff --git a/interpreter/llvm-project/clang/include/clang/Serialization/ASTReader.h b/interpreter/llvm-project/clang/include/clang/Serialization/ASTReader.h index 606c849fe7919..b6ccc230c86f1 100644 --- a/interpreter/llvm-project/clang/include/clang/Serialization/ASTReader.h +++ b/interpreter/llvm-project/clang/include/clang/Serialization/ASTReader.h @@ -800,6 +800,9 @@ class ASTReader /// files. llvm::DenseSet LoadedUndefs; + /// \Token literal data loaded and owned by us. + std::vector TokenLiteralDataLoaded; + /// A vector containing submodules that have already been loaded. /// /// This vector is indexed by the Submodule ID (-1). NULL submodule entries diff --git a/interpreter/llvm-project/clang/lib/Serialization/ASTReader.cpp b/interpreter/llvm-project/clang/lib/Serialization/ASTReader.cpp index 0c2b2b2e3a04a..dffb3246743cd 100644 --- a/interpreter/llvm-project/clang/lib/Serialization/ASTReader.cpp +++ b/interpreter/llvm-project/clang/lib/Serialization/ASTReader.cpp @@ -2135,6 +2135,14 @@ Token ASTReader::ReadToken(ModuleFile &M, const RecordDataImpl &Record, if (IdentifierInfo *II = getLocalIdentifier(M, Record[Idx++])) Tok.setIdentifierInfo(II); } + + if (Tok.isLiteral()) { + const RecordData& RD = reinterpret_cast(Record); + std::string* Lit = new std::string(ReadString(RD, Idx)); + TokenLiteralDataLoaded.push_back(Lit); + Tok.setLiteralData(Lit->c_str()); + } + return Tok; } @@ -11268,6 +11276,9 @@ ASTReader::ASTReader(Preprocessor &PP, ModuleCache &ModCache, ASTReader::~ASTReader() { if (OwnsDeserializationListener) delete DeserializationListener; + for (auto PStr: TokenLiteralDataLoaded) { + delete PStr; + } } IdentifierResolver &ASTReader::getIdResolver() { diff --git a/interpreter/llvm-project/clang/lib/Serialization/ASTWriter.cpp b/interpreter/llvm-project/clang/lib/Serialization/ASTWriter.cpp index 39104da10d0b7..59ecb7fe3e5ea 100644 --- a/interpreter/llvm-project/clang/lib/Serialization/ASTWriter.cpp +++ b/interpreter/llvm-project/clang/lib/Serialization/ASTWriter.cpp @@ -5322,6 +5322,9 @@ void ASTWriter::AddToken(const Token &Tok, RecordDataImpl &Record) { // is needed. AddIdentifierRef(Tok.getIdentifierInfo(), Record); } + + if (Tok.isLiteral()) + AddString(StringRef(Tok.getLiteralData(), Tok.getLength()), Record); } void ASTWriter::AddString(StringRef Str, RecordDataImpl &Record) { From 99711aa052062f2716fd7ba5c8fd277dc58dda87 Mon Sep 17 00:00:00 2001 From: Silia Taider Date: Thu, 3 Sep 2026 10:06:45 +0200 Subject: [PATCH 2/2] [llvm] Bump to tag ROOT-llvm22-20260902-01 --- interpreter/llvm-project/llvm-project.tag | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interpreter/llvm-project/llvm-project.tag b/interpreter/llvm-project/llvm-project.tag index a85ea910b60ce..415102848b569 100644 --- a/interpreter/llvm-project/llvm-project.tag +++ b/interpreter/llvm-project/llvm-project.tag @@ -1 +1 @@ -ROOT-llvm22-20260827-01 +ROOT-llvm22-20260902-01