From b6531fcf2468297437650bc539dd1c2242ec2c99 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 f53e08ac0cf13..13f2b829e415d 100644 --- a/interpreter/llvm-project/clang/include/clang/Sema/Sema.h +++ b/interpreter/llvm-project/clang/include/clang/Sema/Sema.h @@ -13143,15 +13143,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() { @@ -13161,6 +13168,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 229af70d4040955778ea4c0db8f427e80576ddb3 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 13f2b829e415d..a943a477f0554 100644 --- a/interpreter/llvm-project/clang/include/clang/Sema/Sema.h +++ b/interpreter/llvm-project/clang/include/clang/Sema/Sema.h @@ -13139,39 +13139,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 78e6a04841743d877e7b7eb435b8d91068bbfebb Mon Sep 17 00:00:00 2001 From: Jonas Hahnfeld Date: Wed, 21 Oct 2026 14:40:03 +0200 Subject: [PATCH 3/3] [llvm-project] Bump to tag ROOT-llvm20-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 26bc433175990..115c92a7c35e7 100644 --- a/interpreter/llvm-project/llvm-project.tag +++ b/interpreter/llvm-project/llvm-project.tag @@ -1 +1 @@ -ROOT-llvm20-20260616-01 +ROOT-llvm20-20261021-01