(root)/
gcc-13.2.0/
gcc/
testsuite/
gfortran.dg/
gomp/
pr107214-4.f90
! { dg-do compile }
! { dg-additional-options "-fdump-tree-original" }

integer :: x, y

! EXEC_OMP_TARGET_TEAMS

!$omp target teams map(x) firstprivate(x)
x = x + 1
!$omp end target teams

!$omp target teams map(x) firstprivate(y)
x = y + 1
!$omp end target teams

! EXEC_OMP_TARGET_TEAMS_DISTRIBUTE

!$omp target teams distribute map(x) firstprivate(x)
do i=1,1
  x = x + 1
end do
!$omp end target teams distribute

!$omp target teams distribute map(x) firstprivate(y)
do i=1,1
  x = y + 1
end do
!$omp end target teams distribute

! EXEC_OMP_TARGET_TEAMS_LOOP

!$omp target teams loop map(x) firstprivate(x)
do i=1,1
  x = x + 1
end do
!$omp end target teams loop

!$omp target teams loop map(x) firstprivate(y)
do i=1,1
  x = y + 1
end do
!$omp end target teams loop

! EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_SIMD

!$omp target teams distribute simd map(x) firstprivate(x)
do i=1,1
  x = x + 1
end do
!$omp end target teams distribute simd

!$omp target teams distribute simd map(x) firstprivate(y)
do i=1,1
  x = y + 1
end do
!$omp end target teams distribute simd

! EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO

!$omp target teams distribute parallel do map(x) firstprivate(x)
do i=1,1
  x = x + 1
end do
!$omp end target teams distribute parallel do

!$omp target teams distribute parallel do map(x) firstprivate(y)
do i=1,1
  x = y + 1
end do
!$omp end target teams distribute parallel do

! EXEC_OMP_TARGET_PARALLEL

!$omp target parallel map(x) firstprivate(x)
x = x + 1
!$omp end target parallel

!$omp target parallel map(x) firstprivate(y)
x = y + 1
!$omp end target parallel

! EXEC_OMP_TARGET_PARALLEL_DO

!$omp target parallel do map(x) firstprivate(x)
do i=1,1
  x = x + 1
end do
!$omp end target parallel do

!$omp target parallel do map(x) firstprivate(y)
do i=1,1
  x = y + 1
end do
!$omp end target parallel do

! EXEC_OMP_TARGET_PARALLEL_LOOP

!$omp target parallel loop map(x) firstprivate(x)
do i=1,1
  x = x + 1
end do
!$omp end target parallel loop

!$omp target parallel loop map(x) firstprivate(y)
do i=1,1
  x = y + 1
end do
!$omp end target parallel loop

! EXEC_OMP_TARGET_PARALLEL_DO_SIMD

!$omp target parallel do simd map(x) firstprivate(x)
do i=1,1
  x = x + 1
end do
!$omp end target parallel do simd

!$omp target parallel do simd map(x) firstprivate(y)
do i=1,1
  x = y + 1
end do
!$omp end target parallel do simd

! EXEC_OMP_TARGET_TEAMS_DISTRIBUTE_PARALLEL_DO_SIMD

!$omp target teams distribute parallel do simd map(x) firstprivate(x)
do i=1,1
  x = x + 1
end do
!$omp end target teams distribute parallel do simd

!$omp target teams distribute parallel do simd map(x) firstprivate(y)
do i=1,1
  x = y + 1
end do
!$omp end target teams distribute parallel do simd

! { dg-final { scan-tree-dump-times {omp target map\(tofrom:x\)} 10 "original" } }
! { dg-final { scan-tree-dump-times {omp target firstprivate\(y\) map\(tofrom:x\)} 10 "original" } }

! { dg-final { scan-tree-dump-times {omp teams firstprivate\(x\)} 6 "original" } }
! { dg-final { scan-tree-dump-times {omp teams firstprivate\(y\)} 6 "original" } }

! { dg-final { scan-tree-dump-times {omp parallel firstprivate\(x\)} 6 "original" } }
! { dg-final { scan-tree-dump-times {omp parallel firstprivate\(y\)} 6 "original" } }

end