| ! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp |
| |
| module my_module |
| interface foo |
| subroutine foo_int(a) |
| integer :: a |
| end subroutine |
| subroutine foo_real(a) |
| real :: a |
| end subroutine |
| end interface |
| contains |
| subroutine bar(N) |
| integer :: N |
| entry entry1(N) |
| end subroutine |
| subroutine foobar(N) |
| integer::N |
| !ERROR: The procedure 'entry1' in DECLARE TARGET construct cannot be an entry name. |
| !$omp declare target(bar, entry1) |
| call bar(N) |
| end subroutine |
| end module |
| |
| module other_mod |
| abstract interface |
| integer function foo(a) |
| integer, intent(in) :: a |
| end function |
| end interface |
| procedure(foo), pointer :: procptr |
| !ERROR: The procedure 'procptr' in DECLARE TARGET construct cannot be a procedure pointer. |
| !$omp declare target(procptr) |
| end module |
| |
| subroutine baz(x) |
| real, intent(inout) :: x |
| real :: res |
| stmtfunc(x) = 4.0 * (x**3) |
| !ERROR: The procedure 'stmtfunc' in DECLARE TARGET construct cannot be a statement function. |
| !$omp declare target (stmtfunc) |
| res = stmtfunc(x) |
| end subroutine |
| |
| program main |
| use my_module |
| !ERROR: The procedure 'foo' in DECLARE TARGET construct cannot be a generic name. |
| !$omp declare target(foo) |
| end |