https://github.com/SunilKuravinakop created 
https://github.com/llvm/llvm-project/pull/168846

Same changes as in fix for https://github.com/llvm/llvm-project/pull/165276 
except for   changes in test case :
  1)   remove unnecessary include in test to restore Ubuntu build.
 This is not needed as allocatable modifier is not applicable to the default 
clause in C/C++.
   2) Changes in CHECK statements to accommodate testing failure on toolchain
builders at Google, Reported by Prabhu Rajasekaran.

>From aef0bf4f6c2372a62badbbf52d9ed6deaa153997 Mon Sep 17 00:00:00 2001
From: Sunil Kuravinakop <[email protected]>
Date: Fri, 14 Nov 2025 13:56:24 -0600
Subject: [PATCH 1/2] Same changes as in fix for 165276 except for remove
 unnecessary include in test to restore Ubuntu build. This is not needed as
 allocatable modifier is not applicable to the default clause in C/C++.

---
 clang/lib/Sema/SemaOpenMP.cpp                 |  6 +-
 ...allel_default_variableCategory_codegen.cpp | 91 +++++++++++++++++++
 2 files changed, 94 insertions(+), 3 deletions(-)
 create mode 100644 
clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp

diff --git a/clang/lib/Sema/SemaOpenMP.cpp b/clang/lib/Sema/SemaOpenMP.cpp
index 81c591a00cfc6..31c8f0cd30c56 100644
--- a/clang/lib/Sema/SemaOpenMP.cpp
+++ b/clang/lib/Sema/SemaOpenMP.cpp
@@ -1364,15 +1364,15 @@ DSAStackTy::DSAVarData 
DSAStackTy::getDSA(const_iterator &Iter,
   DefaultDataSharingAttributes IterDA = Iter->DefaultAttr;
   switch (Iter->DefaultVCAttr) {
   case DSA_VC_aggregate:
-    if (!VD->getType()->isAggregateType())
+    if (!D->getType()->isAggregateType())
       IterDA = DSA_none;
     break;
   case DSA_VC_pointer:
-    if (!VD->getType()->isPointerType())
+    if (!D->getType()->isPointerType())
       IterDA = DSA_none;
     break;
   case DSA_VC_scalar:
-    if (!VD->getType()->isScalarType())
+    if (!D->getType()->isScalarType())
       IterDA = DSA_none;
     break;
   case DSA_VC_all:
diff --git a/clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp 
b/clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp
new file mode 100644
index 0000000000000..ffafc9a9410b7
--- /dev/null
+++ b/clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp
@@ -0,0 +1,91 @@
+// RUN: %clangxx -Xclang -verify -Wno-vla -fopenmp -fopenmp-version=60 -x c++ 
-S -emit-llvm %s -o - | FileCheck %s
+// expected-no-diagnostics
+#ifndef HEADER
+#define HEADER
+
+int global;
+#define VECTOR_SIZE 4
+
+int main (int argc, char **argv) {
+  int i,n;
+  int x;
+
+  n = VECTOR_SIZE;
+
+  #pragma omp parallel masked firstprivate(x) num_threads(2)
+  {
+     int *xPtr = nullptr;
+     // scalar
+     #pragma omp task default(shared:scalar)
+     {
+       xPtr = &x;
+     }
+     #pragma omp taskwait
+
+     // pointer
+     #pragma omp task default(shared:pointer) shared(x)
+     {
+       xPtr = &x;
+     }
+     #pragma omp taskwait
+  }
+
+  int *aggregate[VECTOR_SIZE] = {0,0,0,0};
+  
+  #pragma omp parallel masked num_threads(2)
+  {
+     // aggregate
+     #pragma omp task default(shared:aggregate)
+     for(i=0;i<n;i++) {
+       aggregate[i] = &x;
+     }
+     #pragma omp taskwait
+
+     #pragma omp task default(shared:aggregate) shared(x)
+     for(i=0;i<n;i++) {
+       aggregate[i] = &x;
+     }
+     #pragma omp taskwait
+
+     // all
+     #pragma omp task default(shared:all)
+     for(i=0;i<n;i++) {
+       aggregate[i] = &x;
+     }
+     #pragma omp taskwait
+  }
+}
+
+#endif
+
+// CHECK-LABEL: define {{.*}}main.omp_outlined{{.*}}
+// CHECK-NEXT:  entry:
+// CHECK: %x.addr = alloca{{.*}}
+// CHECK: %xPtr = alloca{{.*}}
+// CHECK: store ptr null, ptr %xPtr{{.*}}
+// CHECK: store ptr %xPtr{{.*}}
+// CHECK: store ptr %x.addr{{.*}}
+// CHECK-NEXT:  {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
+// CHECK: ret void
+//
+// CHECK: define {{.*}}main.omp_outlined{{.*}}
+// CHECK-NEXT:  entry:
+// CHECK-DAG: %i.addr = alloca{{.*}}
+// CHECK-DAG:  %n.addr = alloca{{.*}}
+// CHECK-DAG:  %aggregate.addr = alloca{{.*}}
+// CHECK-DAG:  %x.addr = alloca{{.*}}
+// CHECK: [[TMP0:%.*]] = load{{.*}}%i.addr{{.*}}
+// CHECK-NEXT:  [[TMP1:%.*]] = load{{.*}}%n.addr{{.*}}
+// CHECK-NEXT:  [[TMP2:%.*]] = load{{.*}}%aggregate.addr{{.*}}
+// CHECK-NEXT:  [[TMP3:%.*]] = load{{.*}}%x.addr{{.*}}
+// CHECK: store ptr [[TMP2]]{{.*}}
+// CHECK-NEXT:  {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
+// CHECK: store ptr [[TMP2]]{{.*}}
+// CHECK: store ptr [[TMP3]]{{.*}}
+// CHECK-NEXT:  {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
+// CHECK: store ptr [[TMP0]]{{.*}}
+// CHECK: store ptr [[TMP1]]{{.*}}
+// CHECK: store ptr [[TMP2]]{{.*}}
+// CHECK: store ptr [[TMP3]]{{.*}}
+// CHECK-NEXT:  {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
+// CHECK: ret void

>From 66a9e86b80533128a2872abcf9cb752ebb04e8a6 Mon Sep 17 00:00:00 2001
From: Sunil Kuravinakop <[email protected]>
Date: Thu, 20 Nov 2025 02:49:36 -0600
Subject: [PATCH 2/2] Changes in CHECK statements to accommodate testing
 failure on toolchain builders at Google, Reported by Prabhu Rajasekaran.

---
 ...allel_default_variableCategory_codegen.cpp | 47 +++++++++----------
 1 file changed, 21 insertions(+), 26 deletions(-)

diff --git a/clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp 
b/clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp
index ffafc9a9410b7..e94d590933c85 100644
--- a/clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp
+++ b/clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp
@@ -59,33 +59,28 @@ int main (int argc, char **argv) {
 #endif
 
 // CHECK-LABEL: define {{.*}}main.omp_outlined{{.*}}
-// CHECK-NEXT:  entry:
-// CHECK: %x.addr = alloca{{.*}}
-// CHECK: %xPtr = alloca{{.*}}
-// CHECK: store ptr null, ptr %xPtr{{.*}}
-// CHECK: store ptr %xPtr{{.*}}
-// CHECK: store ptr %x.addr{{.*}}
-// CHECK-NEXT:  {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
+// CHECK: store ptr null, ptr{{.*}}
+// CHECK-NEXT: {{.*}}getelementptr {{.*}}
+// CHECK-NEXT: store ptr {{.*}}
+// CHECK-NEXT: {{.*}}getelementptr {{.*}}
+// CHECK-NEXT: store ptr {{.*}}
+// CHECK-NEXT: {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
 // CHECK: ret void
 //
 // CHECK: define {{.*}}main.omp_outlined{{.*}}
-// CHECK-NEXT:  entry:
-// CHECK-DAG: %i.addr = alloca{{.*}}
-// CHECK-DAG:  %n.addr = alloca{{.*}}
-// CHECK-DAG:  %aggregate.addr = alloca{{.*}}
-// CHECK-DAG:  %x.addr = alloca{{.*}}
-// CHECK: [[TMP0:%.*]] = load{{.*}}%i.addr{{.*}}
-// CHECK-NEXT:  [[TMP1:%.*]] = load{{.*}}%n.addr{{.*}}
-// CHECK-NEXT:  [[TMP2:%.*]] = load{{.*}}%aggregate.addr{{.*}}
-// CHECK-NEXT:  [[TMP3:%.*]] = load{{.*}}%x.addr{{.*}}
-// CHECK: store ptr [[TMP2]]{{.*}}
-// CHECK-NEXT:  {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
-// CHECK: store ptr [[TMP2]]{{.*}}
-// CHECK: store ptr [[TMP3]]{{.*}}
-// CHECK-NEXT:  {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
-// CHECK: store ptr [[TMP0]]{{.*}}
-// CHECK: store ptr [[TMP1]]{{.*}}
-// CHECK: store ptr [[TMP2]]{{.*}}
-// CHECK: store ptr [[TMP3]]{{.*}}
-// CHECK-NEXT:  {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
+// CHECK: {{.*}}getelementptr {{.*}}
+// CHECK-NEXT: store ptr {{.*}}
+// CHECK-NEXT: {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
+// CHECK: store ptr {{.*}}
+// CHECK-NEXT: {{.*}}getelementptr {{.*}}
+// CHECK-NEXT: store ptr {{.*}}
+// CHECK-NEXT: {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
+// CHECK: store ptr {{.*}}
+// CHECK-NEXT: {{.*}}getelementptr {{.*}}
+// CHECK-NEXT: store ptr {{.*}}
+// CHECK-NEXT: {{.*}}getelementptr {{.*}}
+// CHECK-NEXT: store ptr {{.*}}
+// CHECK-NEXT: {{.*}}getelementptr {{.*}}
+// CHECK-NEXT: store ptr {{.*}}
+// CHECK-NEXT: {{.*}}call{{.*}}__kmpc_omp_task_alloc{{.*}}
 // CHECK: ret void

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to