| ! PR fortran/69281 |
| ! { dg-do compile } |
| ! { dg-additional-options "-fstack-arrays -O2" } |
| |
| program pr69281 |
| implicit none |
| call foo1((/ 1, 3, 3, 7 /)) |
| call foo2((/ 1, 3, 3, 7 /)) |
| call foo3((/ 1, 3, 3, 7 /)) |
| call foo4((/ 1, 3, 3, 7 /)) |
| call foo5((/ 1, 3, 3, 7 /)) |
| call foo6((/ 1, 3, 3, 7 /)) |
| contains |
| subroutine foo1(x) |
| integer, intent(in) :: x(:) |
| !$omp parallel |
| call baz(bar(x)) |
| !$omp end parallel |
| end subroutine |
| subroutine foo2(x) |
| integer, intent(in) :: x(:) |
| !$omp task |
| call baz(bar(x)) |
| !$omp end task |
| end subroutine |
| subroutine foo3(x) |
| integer, intent(in) :: x(:) |
| !$omp target |
| call baz(bar(x)) |
| !$omp end target |
| end subroutine |
| subroutine foo4(x) |
| integer, intent(in) :: x(:) |
| !$omp target teams |
| call baz(bar(x)) |
| !$omp end target teams |
| end subroutine |
| subroutine foo5(x) |
| integer, intent(in) :: x(:) |
| integer :: i |
| !$omp parallel do |
| do i = 1, 1 |
| call baz(bar(x)) |
| end do |
| end subroutine |
| subroutine foo6(x) |
| integer, intent(in) :: x(:) |
| integer :: i |
| !$omp target teams distribute parallel do |
| do i = 1, 1 |
| call baz(bar(x)) |
| end do |
| end subroutine |
| function bar(x) result(a) |
| integer, dimension(:), intent(in) :: x |
| integer, dimension(2,size(x)) :: a |
| a(1,:) = 1 |
| a(2,:) = x |
| end function |
| subroutine baz(a) |
| integer, dimension(:,:), intent(in) :: a |
| end subroutine |
| end program |