https://github.com/chakramsiri updated https://github.com/llvm/llvm-project/pull/234909
>From 7869d9260b58362b8082fa49a8cbd84979f65635 Mon Sep 17 00:00:00 2001 From: Siri Chakram <[email protected]> Date: Fri, 23 Oct 2026 20:12:46 +0530 Subject: [PATCH 1/2] [OpenMP] Fix target update for multidimensional pointer sections --- clang/lib/Sema/SemaOpenMP.cpp | 2 +- .../SemaOpenMP/target-update-multidim-pointer.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 clang/test/SemaOpenMP/target-update-multidim-pointer.c diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp index efe8c9338b5a9e..b4c73e8b4cb1b8 100644 --- a/clang/lib/Sema/SemaOpenMP.cpp +++ b/clang/lib/Sema/SemaOpenMP.cpp @@ -24259,7 +24259,7 @@ class MapBaseChecker final : public StmtVisitor<MapBaseChecker, bool> { AllowWholeSizeArraySection = false; } else if (DKind == OMPD_target_update && SemaRef.getLangOpts().OpenMP >= 50) { - if (IsPointer && !AllowAnotherPtr) + if (IsPointer && !AllowAnotherPtr && !OASE->getLength()) SemaRef.Diag(ELoc, diag::err_omp_section_length_undefined) << /*array of unknown bound */ 1; else diff --git a/clang/test/SemaOpenMP/target-update-multidim-pointer.c b/clang/test/SemaOpenMP/target-update-multidim-pointer.c new file mode 100644 index 00000000000000..139ea4e31cb7a5 --- /dev/null +++ b/clang/test/SemaOpenMP/target-update-multidim-pointer.c @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -fsyntax-only -verify %s + +void test_valid(int **a) { + #pragma omp target data map(to: a[0:1][0:100]) + { + #pragma omp target update from(a[0:1][0:100]) + } +} + +void test_missing_length(int **a) { + #pragma omp target update from(a[0:1][0:]) // expected-error {{section length is unspecified and cannot be inferred because subscripted value is not an array}} + // expected-error@-1 {{expected at least one 'to' clause or 'from' clause specified}} +} \ No newline at end of file >From 8d6526539158f23a5802516d275d3a351b256836 Mon Sep 17 00:00:00 2001 From: Siri Chakram <[email protected]> Date: Sat, 24 Oct 2026 23:15:49 +0530 Subject: [PATCH 2/2] [Clang][CodeGen] Fix weak array assignment cleanup IR --- clang/lib/CodeGen/CGNonTrivialStruct.cpp | 8 +++--- .../test/CodeGenObjC/weak-array-assignment.m | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 clang/test/CodeGenObjC/weak-array-assignment.m diff --git a/clang/lib/CodeGen/CGNonTrivialStruct.cpp b/clang/lib/CodeGen/CGNonTrivialStruct.cpp index 0a383c8f919d95..6ce8f113eca624 100644 --- a/clang/lib/CodeGen/CGNonTrivialStruct.cpp +++ b/clang/lib/CodeGen/CGNonTrivialStruct.cpp @@ -414,9 +414,11 @@ template <class Derived> struct GenFuncBase { StartAddrs[I].getAlignment().alignmentAtOffset(EltSize)); EltQT = IsVolatile ? EltQT.withVolatile() : EltQT; - this->asDerived().visitWithKind(FK, EltQT, nullptr, CharUnits::Zero(), - NewAddrs); - + { + CodeGenFunction::RunCleanupsScope Scope(CGF); + this->asDerived().visitWithKind(FK, EltQT, nullptr, CharUnits::Zero(), + NewAddrs); + } LoopBB = CGF.Builder.GetInsertBlock(); for (unsigned I = 0; I < N; ++I) { diff --git a/clang/test/CodeGenObjC/weak-array-assignment.m b/clang/test/CodeGenObjC/weak-array-assignment.m new file mode 100644 index 00000000000000..7063f382234193 --- /dev/null +++ b/clang/test/CodeGenObjC/weak-array-assignment.m @@ -0,0 +1,26 @@ +// RUN: %clang_cc1 -triple arm64-apple-ios11 -fobjc-arc -fblocks -fobjc-runtime=ios-11.0 -emit-llvm -o - %s | FileCheck %s + +typedef struct { + __weak id values[2]; +} WeakArray; + +WeakArray getWeakArray(void); + +// CHECK-LABEL: define void @copyWeakArray( +// CHECK: call ptr @llvm.objc.loadWeakRetained +// CHECK: call ptr @llvm.objc.storeWeak +// CHECK: call void @llvm.objc.release + +void copyWeakArray(WeakArray *dst, WeakArray *src) { + *dst = *src; +} + +// CHECK-LABEL: define void @moveWeakArray( +// CHECK: call ptr @llvm.objc.loadWeakRetained +// CHECK: call ptr @llvm.objc.storeWeak +// CHECK: call void @llvm.objc.destroyWeak +// CHECK: call void @llvm.objc.release + +void moveWeakArray(WeakArray *dst) { + *dst = getWeakArray(); +} _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
