| ! PR fortran/86421 |
| ! { dg-require-effective-target vect_simd_clones } |
| ! { dg-additional-options "-fopenmp-simd" } |
| ! { dg-additional-options "-mavx" { target avx_runtime } } |
| |
| module mod86421 |
| implicit none |
| contains |
| subroutine foo(x, y, z) |
| real :: x |
| integer :: y, z |
| !$omp declare simd linear(ref(x)) linear(val(y)) linear(uval(z)) |
| x = x + y |
| z = z + 1 |
| end subroutine |
| end module mod86421 |
| |
| program pr86421 |
| use mod86421 |
| implicit none |
| integer :: i, j |
| real :: a(64) |
| j = 0 |
| do i = 1, 64 |
| a(i) = i |
| end do |
| !$omp simd |
| do i = 1, 64 |
| call foo (a(i), i, j) |
| end do |
| do i = 1, 64 |
| if (a(i) .ne. (2 * i)) stop 1 |
| end do |
| if (j .ne. 64) stop 2 |
| end program pr86421 |