| ! { dg-do compile } |
| |
| subroutine f1 |
| type dt |
| logical :: l = .false. |
| end type |
| type dt2 |
| logical :: l = .false. |
| end type |
| !$omp declare reduction (foo:integer(kind = 4) & ! { dg-error "Previous !.OMP DECLARE REDUCTION" } |
| !$omp & :omp_out = omp_out + omp_in) |
| !$omp declare reduction (foo:integer(kind = 4) : & ! { dg-error "Redefinition of !.OMP DECLARE REDUCTION" } |
| !$omp & omp_out = omp_out + omp_in) |
| !$omp declare reduction (bar:integer, & |
| !$omp & real:omp_out = omp_out + omp_in) |
| !$omp declare reduction (baz:integer,real,integer & ! { dg-error "Redefinition of !.OMP DECLARE REDUCTION|Previous" } |
| !$omp & : omp_out = omp_out + omp_in) |
| !$omp declare reduction (id1:dt,dt2:omp_out%l=omp_out%l & |
| !$omp & .or.omp_in%l) |
| !$omp declare reduction (id2:dt,dt:omp_out%l=omp_out%l & ! { dg-error "Redefinition of !.OMP DECLARE REDUCTION|Previous" } |
| !$omp & .or.omp_in%l) |
| !$omp declare reduction (id3:dt2,dt:omp_out%l=omp_out%l & ! { dg-error "Previous !.OMP DECLARE REDUCTION" } |
| !$omp & .or.omp_in%l) |
| !$omp declare reduction (id3:dt2:omp_out%l=omp_out%l & ! { dg-error "Redefinition of !.OMP DECLARE REDUCTION" } |
| !$omp & .or.omp_in%l) |
| end subroutine f1 |
| subroutine f2 |
| interface |
| subroutine f2a (x, y, z) |
| character (len = *) :: x, y |
| logical :: z |
| end subroutine |
| end interface |
| interface f2b |
| subroutine f2b (x, y, z) |
| character (len = *, kind = 1) :: x, y |
| logical :: z |
| end subroutine |
| subroutine f2c (x, y, z) |
| character (kind = 4, len = *) :: x, y |
| logical :: z |
| end subroutine |
| end interface |
| !$omp declare reduction (foo:character(len=*): & |
| !$omp & f2a (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2a (omp_priv, omp_orig, .true.)) |
| !$omp declare reduction (bar:character(len=:): & |
| !$omp & f2a (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2a (omp_priv, omp_orig, .true.)) |
| !$omp declare reduction (baz:character(len=4): & |
| !$omp & f2a (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2a (omp_priv, omp_orig, .true.)) |
| !$omp declare reduction (baz:character(len=5): & |
| !$omp & f2a (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2a (omp_priv, omp_orig, .true.)) |
| !$omp declare reduction (baz:character(len=6): & |
| !$omp & f2a (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2a (omp_priv, omp_orig, .true.)) |
| !$omp declare reduction (id:character(len=*): & ! { dg-error "Previous !.OMP DECLARE REDUCTION" } |
| !$omp & f2a (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2a (omp_priv, omp_orig, .true.)) |
| !$omp declare reduction (id: & ! { dg-error "Redefinition of !.OMP DECLARE REDUCTION" } |
| !$omp & character(len=:) : f2a (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2a (omp_priv, omp_orig, .true.)) |
| !$omp declare reduction & ! { dg-error "Redefinition of !.OMP DECLARE REDUCTION|Previous" } |
| !$omp (id2:character(len=*), character(len=:): & |
| !$omp f2a (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2a (omp_priv, omp_orig, .true.)) |
| !$omp declare reduction (id3:character(len=*, kind = 1), character(kind=4, len=:): & |
| !$omp f2b (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2b (omp_priv, omp_orig, .true.)) |
| !$omp declare reduction (id4:character(kind=4, len=4), character(kind =1, len=4): & |
| !$omp f2b (omp_out, omp_in, .false.)) & |
| !$omp & initializer (f2b (omp_priv, omp_orig, .true.)) |
| end subroutine f2 |