The current pattern was failing OpenACC semantics in acc parse tree canonicalization: ``` !acc loop !dir vector aligned do i=1,n ... ``` Fix it by moving the directive before the OpenACC construct node. Note that I think it could make sense to propagate the $dir info to the acc.loop, at least with classic flang, the $dir seems to make a difference. This is not done here since few directives are supported anyway.
31 lines
720 B
Fortran
31 lines
720 B
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1 -Werror
|
|
! RUN: %python %S/test_errors.py %s %flang_fc1 -fopenacc -Werror
|
|
|
|
subroutine empty
|
|
! WARNING: A DO loop must follow the VECTOR ALWAYS directive
|
|
!dir$ vector always
|
|
end subroutine empty
|
|
|
|
subroutine non_do
|
|
! WARNING: A DO loop must follow the VECTOR ALWAYS directive
|
|
!dir$ vector always
|
|
a = 1
|
|
end subroutine non_do
|
|
|
|
subroutine execution_part
|
|
do i=1,10
|
|
! WARNING: A DO loop must follow the VECTOR ALWAYS directive
|
|
!dir$ vector always
|
|
end do
|
|
end subroutine execution_part
|
|
|
|
! OK
|
|
subroutine test_vector_always_before_acc(a, b, c)
|
|
real, dimension(10) :: a,b,c
|
|
!dir$ vector always
|
|
!$acc loop
|
|
do i=1,N
|
|
a(i) = b(i) + c(i)
|
|
enddo
|
|
end subroutine
|