https://github.com/TPPPP72 updated https://github.com/llvm/llvm-project/pull/183988
>From ab4b2fb8efd5407adcb032de0ef52b8e9022dbb6 Mon Sep 17 00:00:00 2001 From: TPPPP <[email protected]> Date: Sun, 1 Mar 2026 15:43:47 +0800 Subject: [PATCH 1/2] [Clang] Fix crash when __block is used on global variables in C mode --- clang/lib/Sema/SemaObjC.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/clang/lib/Sema/SemaObjC.cpp b/clang/lib/Sema/SemaObjC.cpp index dae30b7e941d1..d6969646ad5a2 100644 --- a/clang/lib/Sema/SemaObjC.cpp +++ b/clang/lib/Sema/SemaObjC.cpp @@ -1711,6 +1711,14 @@ void SemaObjC::handleBlocksAttr(Decl *D, const ParsedAttr &AL) { return; } + VarDecl *VD = dyn_cast<VarDecl>(D); + if (!VD || !VD->hasLocalStorage()) { + Diag(AL.getLoc(), diag::err_block_on_nonlocal) + << AL; + D->setInvalidDecl(); + return; + } + D->addAttr(::new (getASTContext()) BlocksAttr(getASTContext(), AL, type)); } >From c3e37351a4806a2b0777f4674c9bc3ea849c27f1 Mon Sep 17 00:00:00 2001 From: TPPPP <[email protected]> Date: Sun, 1 Mar 2026 15:50:21 +0800 Subject: [PATCH 2/2] clang formatted --- clang/lib/Sema/SemaObjC.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/lib/Sema/SemaObjC.cpp b/clang/lib/Sema/SemaObjC.cpp index d6969646ad5a2..582e3db98b682 100644 --- a/clang/lib/Sema/SemaObjC.cpp +++ b/clang/lib/Sema/SemaObjC.cpp @@ -1713,8 +1713,7 @@ void SemaObjC::handleBlocksAttr(Decl *D, const ParsedAttr &AL) { VarDecl *VD = dyn_cast<VarDecl>(D); if (!VD || !VD->hasLocalStorage()) { - Diag(AL.getLoc(), diag::err_block_on_nonlocal) - << AL; + Diag(AL.getLoc(), diag::err_block_on_nonlocal) << AL; D->setInvalidDecl(); return; } _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
