switch (code->op)
{
+ case EXEC_OMP_DISTRIBUTE_PARALLEL_DO:
+ case EXEC_OMP_DISTRIBUTE_PARALLEL_DO_SIMD:
case EXEC_OMP_PARALLEL_DO:
case EXEC_OMP_PARALLEL_DO_SIMD:
case EXEC_OMP_TARGET_PARALLEL_DO:
omp_workshare_flag = 1;
gfc_resolve_omp_parallel_blocks (code, ns);
break;
+ case EXEC_OMP_DISTRIBUTE_PARALLEL_DO:
+ case EXEC_OMP_DISTRIBUTE_PARALLEL_DO_SIMD:
case EXEC_OMP_PARALLEL:
case EXEC_OMP_PARALLEL_DO:
case EXEC_OMP_PARALLEL_DO_SIMD:
}
break;
case EXEC_OMP_TARGET_PARALLEL_DO:
- case EXEC_OMP_TARGET_PARALLEL_DO_SIMD:
stmt = gfc_trans_omp_parallel_do (code, &block, clausesa);
if (TREE_CODE (stmt) != BIND_EXPR)
stmt = build3_v (BIND_EXPR, NULL, stmt, poplevel (1, 0));
else
poplevel (0, 0);
break;
+ case EXEC_OMP_TARGET_PARALLEL_DO_SIMD:
+ stmt = gfc_trans_omp_parallel_do_simd (code, &block, clausesa);
+ if (TREE_CODE (stmt) != BIND_EXPR)
+ stmt = build3_v (BIND_EXPR, NULL, stmt, poplevel (1, 0));
+ else
+ poplevel (0, 0);
+ break;
case EXEC_OMP_TARGET_SIMD:
stmt = gfc_trans_omp_do (code, EXEC_OMP_SIMD, &block,
&clausesa[GFC_OMP_SPLIT_SIMD], NULL_TREE);
--- /dev/null
+! { dg-additional-options "-fdump-tree-original" }
+!
+! Related:
+! PR fortran/95109
+! PR fortran/94690
+!
+implicit none
+integer :: i, j, k, ll
+integer :: a
+!$omp target parallel do simd collapse(1)
+ do i = 1, 5
+ do j = 1, 5
+ do k = 1, 5
+ a = a + 1
+ end do
+ do ll = 1, 5
+ a = a + 1
+ end do
+ end do
+ end do
+!$omp end target parallel do simd
+end
+
+! { dg-final { scan-tree-dump-times "omp simd linear\\(i:1\\) private\\(j\\) private\\(ll\\) private\\(k\\) collapse\\(1\\)" 1 "original" } }