! Test valid usage of the OpenACC 'declare' directive.
! { dg-additional-options "-fdump-tree-original" }
module mod_a
  implicit none
  integer :: a
  !$acc declare create (a)
end module
module mod_b
  implicit none
  integer :: b
  !$acc declare copyin (b)
end module
module mod_d
  implicit none
  integer :: d
  !$acc declare device_resident (d)
end module
module mod_e
  implicit none
  integer :: e
  !$acc declare link (e)
end module
subroutine sub1
  use mod_a
  use mod_b
  use mod_d
  use mod_e
end subroutine sub1
program test
  use mod_a
  use mod_b
  use mod_d
  use mod_e
  ! { dg-final { scan-tree-dump {(?n)#pragma acc data map\(force_alloc:d\) map\(force_to:b\) map\(force_alloc:a\)$} original } }
end program test
! { dg-final { scan-tree-dump-times {#pragma acc data} 1 original } }