1 /* PR c/70436 */ 2 /* { dg-additional-options "-Wparentheses -fno-openmp" } */ 3 4 int a, b, c; 5 void bar (void); 6 void baz (void); 7 8 void f1(void)9f1 (void) 10 { 11 int i, j; 12 13 if (a) /* { dg-warning "ambiguous" } */ 14 #pragma omp for 15 for (i = 0; i < 10; i++) 16 if (b) 17 bar (); 18 else 19 baz (); 20 21 if (a) /* { dg-warning "ambiguous" } */ 22 while (1) 23 #pragma omp for 24 for (i = 0; i < 10; i++) 25 if (b) 26 bar (); 27 else 28 baz (); 29 30 if (a) /* { dg-warning "ambiguous" } */ 31 for (i = 0; i < 10; i++) 32 #pragma omp for 33 for (j = 0; j < 10; j++) 34 if (b) 35 bar (); 36 else 37 baz (); 38 39 if (a) 40 #pragma omp for 41 for (i = 0; i < 10; i++) 42 if (b) /* { dg-warning "ambiguous" } */ 43 #pragma omp parallel for 44 for (j = 0; j < 10; j++) 45 if (c) 46 bar (); 47 else 48 baz (); 49 50 if (a) /* { dg-warning "ambiguous" } */ 51 #pragma omp taskloop 52 for (i = 0; i < 10; i++) 53 if (b) 54 #pragma omp parallel for 55 for (j = 0; j < 10; j++) 56 if (c) 57 bar (); 58 else 59 baz (); 60 else 61 bar (); 62 63 if (a) /* { dg-warning "ambiguous" } */ 64 #pragma omp taskloop simd 65 for (i = 0; i < 10; i++) 66 if (b) 67 bar (); 68 else 69 baz (); 70 71 if (a) /* { dg-warning "ambiguous" } */ 72 #pragma omp for collapse(2) 73 for (i = 0; i < 10; i++) 74 for (j = 0; j < 10; j++) 75 if (b) 76 bar (); 77 else 78 baz (); 79 80 if (a) /* { dg-warning "ambiguous" } */ 81 #pragma omp critical 82 if (b) 83 bar (); 84 else 85 baz (); 86 87 if (a) /* { dg-warning "ambiguous" } */ 88 for (i = 0; i < 10; i++) 89 #pragma omp simd 90 for (j = 0; j < 10; j++) 91 if (b) 92 bar (); 93 else 94 baz (); 95 96 if (a) /* { dg-warning "ambiguous" } */ 97 #pragma omp for simd schedule(runtime) 98 for (i = 0; i < 10; i++) 99 if (b) 100 bar (); 101 else 102 baz (); 103 104 if (a) /* { dg-warning "ambiguous" } */ 105 #pragma omp master 106 if (b) 107 bar (); 108 else 109 baz (); 110 111 if (a) /* { dg-warning "ambiguous" } */ 112 #pragma omp parallel 113 if (b) 114 bar (); 115 else 116 baz (); 117 118 if (a) /* { dg-warning "ambiguous" } */ 119 for (i = 0; i < 10; i++) 120 #pragma omp parallel for 121 for (j = 0; j < 10; j++) 122 if (b) 123 bar (); 124 else 125 baz (); 126 127 if (a) /* { dg-warning "ambiguous" } */ 128 for (i = 0; i < 10; i++) 129 #pragma omp parallel for simd 130 for (j = 0; j < 10; j++) 131 if (b) 132 bar (); 133 else 134 baz (); 135 136 if (a) /* { dg-warning "ambiguous" } */ 137 #pragma omp single 138 if (b) 139 bar (); 140 else 141 baz (); 142 143 if (a) /* { dg-warning "ambiguous" } */ 144 #pragma omp task 145 if (b) 146 bar (); 147 else 148 baz (); 149 150 if (a) /* { dg-warning "ambiguous" } */ 151 #pragma omp taskgroup 152 if (b) 153 bar (); 154 else 155 baz (); 156 157 if (a) 158 #pragma omp for 159 for (i = 0; i < 10; i++) 160 { 161 if (b) 162 bar (); 163 else 164 baz (); 165 } 166 167 if (a) 168 { 169 #pragma omp taskloop 170 for (i = 0; i < 10; ++i) 171 if (b) 172 bar (); 173 } 174 else baz (); 175 176 if (a) 177 #pragma omp for collapse(2) 178 for (i = 0; i < 10; i++) 179 { 180 for (j = 0; j < 10; j++) 181 if (b) 182 bar (); 183 else 184 baz (); 185 } 186 187 if (a) 188 #pragma omp critical 189 { 190 if (b) 191 bar (); 192 else 193 baz (); 194 } 195 196 if (a) 197 for (i = 0; i < 10; i++) 198 #pragma omp simd 199 for (j = 0; j < 10; j++) 200 { 201 if (b) 202 bar (); 203 } 204 else 205 baz (); 206 207 if (a) 208 #pragma omp for simd schedule(dynamic, 5) 209 for (i = 0; i < 10; i++) 210 { 211 if (b) 212 bar (); 213 else 214 baz (); 215 } 216 217 if (a) 218 #pragma omp master 219 { 220 if (b) 221 bar (); 222 else 223 baz (); 224 } 225 226 if (a) 227 #pragma omp parallel 228 { 229 if (b) 230 bar (); 231 else 232 baz (); 233 } 234 235 if (a) 236 { 237 #pragma omp parallel 238 if (b) 239 bar (); 240 else 241 baz (); 242 } 243 244 if (a) 245 for (i = 0; i < 10; i++) 246 #pragma omp parallel for 247 for (j = 0; j < 10; j++) 248 { 249 if (b) 250 bar (); 251 } 252 else 253 baz (); 254 255 if (a) 256 for (i = 0; i < 10; i++) 257 #pragma omp parallel for simd 258 for (j = 0; j < 10; j++) 259 { 260 if (b) 261 bar (); 262 } 263 else 264 baz (); 265 266 if (a) 267 #pragma omp single 268 { 269 if (b) 270 bar (); 271 } 272 else 273 baz (); 274 275 if (a) 276 #pragma omp task 277 { 278 if (b) 279 bar (); 280 } 281 else 282 baz (); 283 284 if (a) 285 #pragma omp taskgroup 286 { 287 if (b) 288 bar (); 289 else 290 baz (); 291 } 292 293 if (a) 294 #pragma omp taskloop simd 295 for (i = 0; i < 10; i++) 296 { 297 if (b) 298 bar (); 299 else 300 baz (); 301 } 302 } 303 304 void f2(int d,int e,int f)305f2 (int d, int e, int f) 306 { 307 if (a) /* { dg-warning "ambiguous" } */ 308 #pragma omp ordered 309 if (b) 310 bar (); 311 else 312 baz (); 313 314 if (d) /* { dg-warning "ambiguous" } */ 315 #pragma omp ordered threads 316 if (b) 317 bar (); 318 else 319 baz (); 320 321 if (e) 322 #pragma omp ordered 323 { 324 if (b) 325 bar (); 326 else 327 baz (); 328 } 329 330 if (f) 331 #pragma omp ordered threads 332 { 333 if (b) 334 bar (); 335 else 336 baz (); 337 } 338 } 339