[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