Author: SunilKuravinakop
Date: 2025-11-21T10:53:11+05:45
New Revision: 0a231c9ad9c8db10380379e2e6f021d6af9a7e7f

URL: 
https://github.com/llvm/llvm-project/commit/0a231c9ad9c8db10380379e2e6f021d6af9a7e7f
DIFF: 
https://github.com/llvm/llvm-project/commit/0a231c9ad9c8db10380379e2e6f021d6af9a7e7f.diff

LOG: [Clang][OpenMP] Bug fix Default clause variable category (#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.

---------

Co-authored-by: Sunil Kuravinakop <[email protected]>

Added: 
    clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp

Modified: 
    clang/lib/Sema/SemaOpenMP.cpp

Removed: 
    


################################################################################
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..e94d590933c85
--- /dev/null
+++ b/clang/test/OpenMP/parallel_default_variableCategory_codegen.cpp
@@ -0,0 +1,86 @@
+// 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: 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: {{.*}}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