| module m |
| implicit none (external, type) |
| type t |
| end type t |
| contains |
| subroutine foo (x, y, z, a) |
| external :: bar |
| type(t) :: x |
| integer :: y |
| real :: z |
| integer :: a(4) |
| |
| !$omp masked filter (x) ! { dg-error "FILTER clause at .1. requires a scalar INTEGER expression" } |
| call bar () |
| !$omp end masked |
| |
| !$omp masked filter (y) ! OK |
| call bar () |
| !$omp end masked |
| |
| !$omp masked filter (z) ! { dg-error "FILTER clause at .1. requires a scalar INTEGER expression" } |
| call bar () |
| !$omp end masked |
| |
| !$omp masked filter (a) ! { dg-error "FILTER clause at .1. requires a scalar INTEGER expression" } |
| call bar () |
| !$omp end masked |
| |
| !$omp masked filter (0.0) ! { dg-error "FILTER clause at .1. requires a scalar INTEGER expression" } |
| call bar () |
| !$omp end masked |
| |
| !$omp masked filter ([1]) ! { dg-error "FILTER clause at .1. requires a scalar INTEGER expression" } |
| call bar () |
| !$omp end masked |
| |
| !$omp masked filter (-1) ! { dg-warning "INTEGER expression of FILTER clause at .1. must be non-negative" } |
| call bar () |
| !$omp end masked |
| end |
| end module |
| |
| subroutine bar |
| !$omp masked filter (0) filter (0) ! { dg-error "Duplicated 'filter' clause" } |
| call foobar |
| end |