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