1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
// RUN: %clang_cc1 %s -verify -fopenacc
void func() {
// expected-error@+1{{expected OpenACC directive}}
#pragma acc
for(;;){}
// expected-error@+2{{expected OpenACC directive}}
// expected-error@+1{{invalid OpenACC clause 'whatever'}}
#pragma acc(whatever) routine
// expected-error@+2{{expected OpenACC directive}}
// expected-error@+1{{invalid OpenACC clause 'routine'}}
#pragma acc) routine
// expected-error@+1{{invalid OpenACC directive 'invalid'}}
#pragma acc invalid
for(;;){}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc parallel clause list
for(;;){}
// expected-error@+2{{expected clause-list or newline in OpenACC directive}}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc parallel() clause list
for(;;){}
// expected-error@+3{{expected clause-list or newline in OpenACC directive}}
// expected-error@+2{{expected ')'}}
// expected-note@+1{{to match this '('}}
#pragma acc parallel( clause list
for(;;){}
// expected-error@+2{{expected clause-list or newline in OpenACC directive}}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc parallel() clause list
for(;;){}
// expected-error@+3{{expected clause-list or newline in OpenACC directive}}
// expected-error@+2{{expected ')'}}
// expected-note@+1{{to match this '('}}
#pragma acc parallel( clause list
for(;;){}
// expected-error@+2{{expected clause-list or newline in OpenACC directive}}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc serial() clause list
for(;;){}
// expected-error@+3{{expected clause-list or newline in OpenACC directive}}
// expected-error@+2{{expected ')'}}
// expected-note@+1{{to match this '('}}
#pragma acc serial( clause list
for(;;){}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc serial clause list
for(;;){}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc kernels clause list
for(;;){}
// expected-error@+2{{OpenACC 'data' construct must have at least one 'attach', 'copy', 'copyin', 'copyout', 'create', 'default', 'deviceptr', 'no_create', or 'present' clause}}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc data clause list
for(;;){}
// expected-error@+2{{OpenACC 'enter data' construct must have at least one 'attach', 'copyin', or 'create' clause}}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc enter data clause list
for(;;){}
// expected-error@+2{{OpenACC 'exit data' construct must have at least one 'copyout', 'delete', or 'detach' clause}}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc exit data clause list
for(;;){}
// expected-error@+1{{invalid OpenACC directive 'enter invalid'}}
#pragma acc enter invalid
for(;;){}
// expected-error@+1{{invalid OpenACC directive 'exit invalid'}}
#pragma acc exit invalid
for(;;){}
// expected-error@+1{{invalid OpenACC directive 'enter'}}
#pragma acc enter
for(;;){}
// expected-error@+1{{expected identifier}}
#pragma acc exit }
for(;;){}
// expected-error@+2{{OpenACC 'host_data' construct must have at least one 'use_device' clause}}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc host_data clause list
for(;;){}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc loop clause list
for(int i = 0; i < 6;++i){}
// expected-error@+1{{invalid OpenACC clause 'invalid'}}
#pragma acc parallel invalid clause list
for(int i = 0; i < 6;++i){}
// expected-error@+1{{invalid OpenACC clause 'invalid'}}
#pragma acc serial invalid clause list
for(int i = 0; i < 6;++i){}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc parallel loop clause list
for(int i = 0; i < 6;++i){}
#pragma acc parallel loop
for(int i = 0; i < 6;++i){}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc serial loop clause list
for(int i = 0; i < 6;++i){}
#pragma acc serial loop
for(int i = 0; i < 6;++i){}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc kernels loop clause list
for(int i = 0; i < 6;++i){}
#pragma acc kernels loop
for(int i = 0; i < 6;++i){}
int i = 0, j = 0, k = 0;
#pragma acc atomic
i = i + 1;
// expected-error@+1{{invalid OpenACC clause 'garbage'}}
#pragma acc atomic garbage
i = i + 1;
// expected-error@+1{{invalid OpenACC clause 'garbage'}}
#pragma acc atomic garbage clause list
i = i + 1;
#pragma acc atomic read
i = j;
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc atomic write clause list
i = i + j;
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc atomic update clause list
i++;
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc atomic capture clause list
i = j++;
// expected-error@+2{{invalid OpenACC clause 'clause'}}
// expected-error@+1{{no valid clauses specified in OpenACC 'declare' directive}}
#pragma acc declare clause list
for(;;){}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc init clause list
for(;;){}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc shutdown clause list
for(;;){}
// expected-error@+2{{invalid OpenACC clause 'clause'}}
// expected-error@+1{{OpenACC 'set' construct must have at least one 'default_async', 'device_num', or 'device_type' clause}}
#pragma acc set clause list
for(;;){}
// expected-error@+2{{OpenACC 'update' construct must have at least one 'device', 'host', or 'self' clause}}
// expected-error@+1{{invalid OpenACC clause 'clause'}}
#pragma acc update clause list
for(;;){}
}
#pragma acc routine seq
void routine_func();
// expected-error@+2{{invalid OpenACC clause 'clause'}}
// expected-error@+1{{OpenACC 'routine' construct must have at least one 'gang', 'seq', 'vector', or 'worker' clause}}
#pragma acc routine clause list
void routine_func();
// expected-error@+1{{use of undeclared identifier 'func_name'}}
#pragma acc routine (func_name) seq
// expected-error@+3{{use of undeclared identifier 'func_name'}}
// expected-error@+2{{invalid OpenACC clause 'clause'}}
// expected-error@+1{{OpenACC 'routine' construct must have at least one 'gang', 'seq', 'vector', or 'worker' clause}}
#pragma acc routine (func_name) clause list
#pragma acc routine (routine_func) seq
// expected-error@+2{{invalid OpenACC clause 'clause'}}
// expected-error@+1{{OpenACC 'routine' construct must have at least one 'gang', 'seq', 'vector', or 'worker' clause}}
#pragma acc routine (routine_func) clause list
// expected-error@+2{{expected ')'}}
// expected-note@+1{{to match this '('}}
#pragma acc routine (routine_func()) seq
// expected-error@+1{{expected identifier}}
#pragma acc routine() seq
// expected-error@+1{{expected identifier}}
#pragma acc routine(int) seq
|