From c2cc05b43c43600837ee3d70f460f6df3c14a257 Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Mon, 18 Mar 2024 14:56:27 +0100 Subject: [PATCH 1/3] [clang] Correctly RAII reset two "new" Sema fields FunctionScopesStart and InventedParameterInfosStart were introduced by upstream commit https://github.com/llvm/llvm-project/commit/5c845c1c50ac89a6f12557d1571678f3d1432478 and are handled in ContextRAII, but not our ContextAndScopeRAII. (cherry picked from commit b7023918166d8ff532c8d4b8a50a2924133033a1 and a226dd4630a0d82df6557043420f6f205edbd43f, it was lost (again) during the upgrade to LLVM 20) --- .../llvm-project/clang/include/clang/Sema/Sema.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/interpreter/llvm-project/clang/include/clang/Sema/Sema.h b/interpreter/llvm-project/clang/include/clang/Sema/Sema.h index fdcd95b2a0f2b..5ca5d36cd80d2 100644 --- a/interpreter/llvm-project/clang/include/clang/Sema/Sema.h +++ b/interpreter/llvm-project/clang/include/clang/Sema/Sema.h @@ -13547,15 +13547,22 @@ class Sema final : public SemaBase { Scope *SavedScope; ProcessingContextState SavedContextState; QualType SavedCXXThisTypeOverride; + unsigned SavedFunctionScopesStart; + unsigned SavedInventedParameterInfosStart; public: ContextAndScopeRAII(Sema &S, DeclContext *ContextToPush, Scope *ScopeToPush) : S(S), SavedContext(S.CurContext), SavedScope(S.CurScope), SavedContextState(S.DelayedDiagnostics.pushUndelayed()), - SavedCXXThisTypeOverride(S.CXXThisTypeOverride) { + SavedCXXThisTypeOverride(S.CXXThisTypeOverride), + SavedFunctionScopesStart(S.FunctionScopesStart), + SavedInventedParameterInfosStart(S.InventedParameterInfosStart) { assert(ContextToPush && "pushing null context"); S.CurContext = ContextToPush; S.CurScope = ScopeToPush; + // Any saved FunctionScopes do not refer to this context. + S.FunctionScopesStart = S.FunctionScopes.size(); + S.InventedParameterInfosStart = S.InventedParameterInfos.size(); } void pop() { @@ -13565,6 +13572,8 @@ class Sema final : public SemaBase { S.CurScope = SavedScope; S.DelayedDiagnostics.popUndelayed(SavedContextState); S.CXXThisTypeOverride = SavedCXXThisTypeOverride; + S.FunctionScopesStart = SavedFunctionScopesStart; + S.InventedParameterInfosStart = SavedInventedParameterInfosStart; SavedContext = 0; SavedScope = 0; } From 5839157321cf016c77436ab6e982c68ba134e88f Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Mon, 18 Mar 2024 15:34:08 +0100 Subject: [PATCH 2/3] [clang] Reuse ContextRAII for ContextAndScopeRAII (cherry picked from commit 07021eab861d8afff7e85d438444dbcd6635fa45 and 8e9e1aee4252896c5ef369d58a50ee40e8f05e95, it was lost (again) during the upgrade to LLVM 20) --- .../clang/include/clang/Sema/Sema.h | 28 ++++--------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/interpreter/llvm-project/clang/include/clang/Sema/Sema.h b/interpreter/llvm-project/clang/include/clang/Sema/Sema.h index 5ca5d36cd80d2..7d582a4c80dad 100644 --- a/interpreter/llvm-project/clang/include/clang/Sema/Sema.h +++ b/interpreter/llvm-project/clang/include/clang/Sema/Sema.h @@ -13543,39 +13543,21 @@ class Sema final : public SemaBase { class ContextAndScopeRAII { private: Sema &S; - DeclContext *SavedContext; + ContextRAII SavedContext; Scope *SavedScope; - ProcessingContextState SavedContextState; - QualType SavedCXXThisTypeOverride; - unsigned SavedFunctionScopesStart; - unsigned SavedInventedParameterInfosStart; public: ContextAndScopeRAII(Sema &S, DeclContext *ContextToPush, Scope *ScopeToPush) - : S(S), SavedContext(S.CurContext), SavedScope(S.CurScope), - SavedContextState(S.DelayedDiagnostics.pushUndelayed()), - SavedCXXThisTypeOverride(S.CXXThisTypeOverride), - SavedFunctionScopesStart(S.FunctionScopesStart), - SavedInventedParameterInfosStart(S.InventedParameterInfosStart) { - assert(ContextToPush && "pushing null context"); - S.CurContext = ContextToPush; + : S(S), SavedContext(S, ContextToPush), SavedScope(S.CurScope) { S.CurScope = ScopeToPush; - // Any saved FunctionScopes do not refer to this context. - S.FunctionScopesStart = S.FunctionScopes.size(); - S.InventedParameterInfosStart = S.InventedParameterInfos.size(); } void pop() { - if (!SavedContext) + SavedContext.pop(); + if (!SavedScope) return; - S.CurContext = SavedContext; S.CurScope = SavedScope; - S.DelayedDiagnostics.popUndelayed(SavedContextState); - S.CXXThisTypeOverride = SavedCXXThisTypeOverride; - S.FunctionScopesStart = SavedFunctionScopesStart; - S.InventedParameterInfosStart = SavedInventedParameterInfosStart; - SavedContext = 0; - SavedScope = 0; + SavedScope = nullptr; } ~ContextAndScopeRAII() { pop(); } From c68eb060d076d306f88c5446928fdc19bc13db38 Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Wed, 21 Oct 2026 14:08:49 +0200 Subject: [PATCH 3/3] [llvm-project] Bump to tag ROOT-llvm22-20261021-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 c6e9d35fc391b..f277a4ee1c7f0 100644 --- a/interpreter/llvm-project/llvm-project.tag +++ b/interpreter/llvm-project/llvm-project.tag @@ -1 +1 @@ -ROOT-llvm22-20261019-01 +ROOT-llvm22-20261021-01