| subroutine bar |
| !$omp requires unified_shared_memory,unified_address,reverse_offload |
| end |
| |
| module m |
| !$omp requires unified_shared_memory,unified_address,reverse_offload |
| end module m |
| |
| subroutine foo |
| !$omp target |
| !$omp end target |
| ! { dg-error "OpenMP device constructs/routines but does not set !.OMP REQUIRES REVERSE_OFFLOAD but other program units do" "" { target *-*-* } 9 } |
| ! { dg-error "OpenMP device constructs/routines but does not set !.OMP REQUIRES UNIFIED_ADDRESS but other program units do" "" { target *-*-* } 9 } |
| ! { dg-error "OpenMP device constructs/routines but does not set !.OMP REQUIRES UNIFIED_SHARED_MEMORY but other program units do" "" { target *-*-* } 9 } |
| end |
| |
| subroutine foobar |
| i = 5 ! < execution statement |
| !$omp requires atomic_default_mem_order(seq_cst) ! { dg-error "Unexpected ..OMP REQUIRES statement" } |
| end |
| |
| program main |
| !$omp requires dynamic_allocators ! OK |
| !$omp requires unified_shared_memory |
| !$omp requires unified_address |
| !$omp requires reverse_offload |
| contains |
| subroutine foo |
| !$omp target |
| !$omp end target |
| end subroutine |
| subroutine bar |
| !$omp requires unified_address ! { dg-error "must appear in the specification part of a program unit" } |
| end subroutine bar |
| end |
| ! { dg-prune-output "not yet supported" } |