[flang-commits] [flang] [flang][OpenMP] Privatize indirectly referenced symbols (PR #187097)

Leandro Lupori via flang-commits flang-commits at lists.llvm.org
Tue Mar 17 12:59:29 PDT 2026


================
@@ -106,3 +106,38 @@ subroutine teams_distribute_parallel_do
     !$omp end teams distribute parallel do simd
 !CHECK: } {linear_var_types = [i32, i32], omp.composite}
 end subroutine teams_distribute_parallel_do
+
+subroutine parallel_simd
+!CHECK-LABEL: func @_QPparallel_simd
+!CHECK: omp.parallel private(@_QFparallel_simdEk2_private_i32 {{.*}} -> %[[ARG:.*]] : !fir.ref<i32>)
+!CHECK:   %[[PRIV_K2:.*]]:2 = hlfir.declare %[[ARG]] {uniq_name = "_QFparallel_simdEk2"}
+!CHECK:   omp.simd linear(%[[PRIV_K2]]#0 {{.*}})
+    integer :: k1, k2
+    !$omp parallel default(none)
+        !$omp do
+        do k1 = 1, 10
+            do k2 = 1, 10
+            end do
+        end do
+        !$omp end do
+
+        !$omp simd linear(k2)
+        do k2 = 1, 10
+        end do
+        !$omp end simd
+    !$omp end parallel
+end subroutine parallel_simd
+
+subroutine task_simd
+!CHECK-LABEL: func @_QPtask_simd
+!CHECK: omp.task private(@_QFtask_simdEk_firstprivate_i32 %{{.*}})
+!CHECK:   %[[PRIV_K:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFtask_simdEk"}
+!CHECK:   omp.simd linear(%[[PRIV_K]]#0 : !fir.ref<i32> {{.*}})
+    integer :: k
+    !$omp task
+        !$omp simd linear(k)
+            do k = 1, 10
+            end do
+        !$omp end simd
+    !$omp end task
+end subroutine task_simd
----------------
luporl wrote:

I realized now that these tests probably don't qualify as "composite simd linear".

https://github.com/llvm/llvm-project/pull/187097


More information about the flang-commits mailing list