1! PR fortran/86421
2! { dg-require-effective-target vect_simd_clones }
3! { dg-additional-options "-fopenmp-simd" }
4! { dg-additional-options "-mavx" { target avx_runtime } }
5
6module mod86421
7  implicit none
8contains
9  subroutine foo(x, y, z)
10    real :: x
11    integer :: y, z
12    !$omp declare simd linear(ref(x)) linear(val(y)) linear(uval(z))
13    x = x + y
14    z = z + 1
15  end subroutine
16end module mod86421
17
18program pr86421
19  use mod86421
20  implicit none
21  integer :: i, j
22  real :: a(64)
23  j = 0
24  do i = 1, 64
25    a(i) = i
26  end do
27  !$omp simd
28  do i = 1, 64
29    call foo (a(i), i, j)
30  end do
31  do i = 1, 64
32    if (a(i) .ne. (2 * i)) stop 1
33  end do
34  if (j .ne. 64) stop 2
35end program pr86421
36