| ! Ensure that each parallel reduction variable as a copy or pcopy |
| ! data clause. |
| |
| ! { dg-additional-options "-fdump-tree-gimple" } |
| |
| program test |
| implicit none |
| integer :: v1, v2 |
| |
| !$acc parallel reduction(+:v1,v2) |
| !$acc end parallel |
| |
| !$acc parallel reduction(+:v1,v2) copy(v1,v2) |
| !$acc end parallel |
| |
| !$acc parallel reduction(+:v1,v2) pcopy(v1,v2) |
| !$acc end parallel |
| |
| !$acc parallel reduction(+:v1,v2) present(v1,v2) |
| !$acc end parallel |
| |
| !$acc parallel reduction(+:v1,v2) copyin(v1,v2) ! { dg-warning "incompatible data clause" } |
| !$acc end parallel |
| |
| !$acc parallel reduction(+:v1,v2) pcopyin(v1,v2) ! { dg-warning "incompatible data clause" } |
| !$acc end parallel |
| |
| !$acc parallel reduction(+:v1,v2) copyout(v1,v2) ! { dg-warning "incompatible data clause" } |
| !$acc end parallel |
| |
| !$acc parallel reduction(+:v1,v2) pcopyout(v1,v2) ! { dg-warning "incompatible data clause" } |
| !$acc end parallel |
| |
| !$acc parallel reduction(+:v1,v2) create(v1,v2) ! { dg-warning "incompatible data clause" } |
| !$acc end parallel |
| |
| !$acc parallel reduction(+:v1,v2) pcreate(v1,v2) ! { dg-warning "incompatible data clause" } |
| !$acc end parallel |
| end program test |
| |
| ! { dg-final { scan-tree-dump-times "map.tofrom:v1" 9 "gimple" } } |
| ! { dg-final { scan-tree-dump-times "map.tofrom:v2" 9 "gimple" } } |
| ! { dg-final { scan-tree-dump-times "map.force_present:v1" 1 "gimple" } } |
| ! { dg-final { scan-tree-dump-times "map.force_present:v2" 1 "gimple" } } |