1! { dg-do compile } 2 3program asyncwait 4 integer, parameter :: N = 64 5 real, allocatable :: a(:), b(:) 6 integer i 7 8 allocate (a(N)) 9 allocate (b(N)) 10 11 a(:) = 3.0 12 b(:) = 0.0 13 14 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (1 2) ! { dg-error "Syntax error in OpenACC expression list" } 15 do i = 1, N 16 b(i) = a(i) 17 end do 18 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 19 20 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (1,) ! { dg-error "Syntax error in OpenACC expression list" } 21 do i = 1, N 22 b(i) = a(i) 23 end do 24 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 25 26 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (,1) ! { dg-error "Syntax error in OpenACC expression list" } 27 do i = 1, N 28 b(i) = a(i) 29 end do 30 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 31 32 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (1,2,) ! { dg-error "Syntax error in OpenACC expression list" } 33 do i = 1, N 34 b(i) = a(i) 35 end do 36 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 37 38 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (1,2 3) ! { dg-error "Syntax error in OpenACC expression list" } 39 do i = 1, N 40 b(i) = a(i) 41 end do 42 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 43 44 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (1,2,,) ! { dg-error "Syntax error in OpenACC expression list" } 45 do i = 1, N 46 b(i) = a(i) 47 end do 48 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 49 50 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (1 ! { dg-error "Syntax error in OpenACC expression list" } 51 do i = 1, N 52 b(i) = a(i) 53 end do 54 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 55 56 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (*) ! { dg-error "Syntax error in OpenACC expression list" } 57 do i = 1, N 58 b(i) = a(i) 59 end do 60 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 61 62 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (a) ! { dg-error "WAIT clause at \\\(1\\\) requires a scalar INTEGER expression" } 63 do i = 1, N 64 b(i) = a(i) 65 end do 66 !$acc end parallel 67 68 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (N) 69 do i = 1, N 70 b(i) = a(i) 71 end do 72 !$acc end parallel 73 74 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait (1.0) ! { dg-error "WAIT clause at \\\(1\\\) requires a scalar INTEGER expression" } 75 do i = 1, N 76 b(i) = a(i) 77 end do 78 !$acc end parallel 79 80 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait () ! { dg-error "Syntax error in OpenACC expression list" } 81 do i = 1, N 82 b(i) = a(i) 83 end do 84 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 85 86 !$acc parallel copyin (a(1:N)) copy (b(1:N)) waitasync ! { dg-error "Failed to match clause" } 87 do i = 1, N 88 b(i) = a(i) 89 end do 90 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 91 92 !$acc parallel copyin (a(1:N)) copy (b(1:N)) asyncwait ! { dg-error "Failed to match clause" } 93 do i = 1, N 94 b(i) = a(i) 95 end do 96 !$acc end parallel ! { dg-error "Unexpected \\\!\\\$ACC END PARALLEL" } 97 98 !$acc parallel copyin (a(1:N)) copy (b(1:N)) wait 99 do i = 1, N 100 b(i) = a(i) 101 end do 102 !$acc end parallel 103end program asyncwait 104