/* PR c/70436 */ /* { dg-additional-options "-Wparentheses -fno-openmp" } */ int a, b, c; void bar (void); void baz (void); void f1 (void); #pragma omp declare target to (bar, baz, f1, a, b, c) void f1 (void) { int i, j; if (a) /* { dg-warning "ambiguous" } */ #pragma omp distribute for (i = 0; i < 10; i++) if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ for (i = 0; i < 10; i++) #pragma omp distribute simd for (j = 0; j < 10; j++) if (b) bar (); else baz (); if (a) #pragma omp distribute parallel for for (i = 0; i < 10; i++) if (b) /* { dg-warning "ambiguous" } */ #pragma omp parallel for for (j = 0; j < 10; j++) if (c) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp distribute parallel for simd collapse(2) for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) if (b) bar (); else baz (); if (a) #pragma omp distribute for (i = 0; i < 10; i++) { if (b) bar (); else baz (); } if (a) { #pragma omp distribute simd for (i = 0; i < 10; ++i) if (b) bar (); } else baz (); if (a) #pragma omp distribute parallel for collapse(2) for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) if (b) bar (); else baz (); } if (a) for (i = 0; i < 10; i++) #pragma omp distribute parallel for simd for (j = 0; j < 10; j++) { if (b) bar (); } else baz (); } void f2 (void) { int i, j; if (a) /* { dg-warning "ambiguous" } */ #pragma omp target teams distribute for (i = 0; i < 10; i++) if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ for (i = 0; i < 10; i++) #pragma omp target teams distribute simd for (j = 0; j < 10; j++) if (b) bar (); else baz (); if (a) #pragma omp target teams distribute parallel for for (i = 0; i < 10; i++) if (b) /* { dg-warning "ambiguous" } */ #pragma omp parallel for for (j = 0; j < 10; j++) if (c) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target teams distribute parallel for simd collapse(2) for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target teams if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target #pragma omp parallel if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target parallel if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target simd for (i = 0; i < 10; i++) if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target simd collapse(2) for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) if (b) bar (); else baz (); if (a) #pragma omp target teams distribute for (i = 0; i < 10; i++) { if (b) bar (); else baz (); } if (a) { #pragma omp target teams distribute simd for (i = 0; i < 10; ++i) if (b) bar (); } else baz (); if (a) #pragma omp target teams distribute parallel for collapse(2) for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) if (b) bar (); else baz (); } if (a) for (i = 0; i < 10; i++) #pragma omp target teams distribute parallel for simd for (j = 0; j < 10; j++) { if (b) bar (); } else baz (); if (a) #pragma omp target teams { if (b) bar (); } else baz (); if (a) #pragma omp target #pragma omp parallel { if (b) bar (); else baz (); } if (a) #pragma omp target { if (b) bar (); } else baz (); if (a) #pragma omp target parallel { if (b) bar (); } else baz (); if (a) #pragma omp target simd for (i = 0; i < 10; i++) { if (b) bar (); else baz (); } if (a) #pragma omp target simd for (i = 0; i < 10; i++) { if (b) bar (); } else baz (); if (a) #pragma omp target simd collapse(2) for (i = 0; i < 10; i++) { { for (j = 0; j < 10; j++) if (b) bar (); else baz (); } } if (a) #pragma omp target simd collapse(2) for (i = 0; i < 10; i++) { { for (j = 0; j < 10; j++) if (b) bar (); } } else baz (); } void f3 (void) { int i, j; if (a) /* { dg-warning "ambiguous" } */ #pragma omp target #pragma omp teams distribute for (i = 0; i < 10; i++) if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ for (i = 0; i < 10; i++) #pragma omp target #pragma omp teams distribute simd for (j = 0; j < 10; j++) if (b) bar (); else baz (); if (a) #pragma omp target #pragma omp teams distribute parallel for for (i = 0; i < 10; i++) if (b) /* { dg-warning "ambiguous" } */ #pragma omp parallel for for (j = 0; j < 10; j++) if (c) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target #pragma omp teams distribute parallel for simd collapse(2) for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target #pragma omp teams if (b) bar (); else baz (); if (a) /* { dg-warning "ambiguous" } */ #pragma omp target #pragma omp teams #pragma omp parallel if (b) bar (); else baz (); if (a) #pragma omp target #pragma omp teams distribute for (i = 0; i < 10; i++) { if (b) bar (); else baz (); } if (a) { #pragma omp target #pragma omp teams distribute simd for (i = 0; i < 10; ++i) if (b) bar (); } else baz (); if (a) #pragma omp target #pragma omp teams distribute parallel for collapse(2) for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) if (b) bar (); else baz (); } if (a) for (i = 0; i < 10; i++) #pragma omp target #pragma omp teams distribute parallel for simd for (j = 0; j < 10; j++) { if (b) bar (); } else baz (); if (a) #pragma omp target #pragma omp teams { if (b) bar (); } else baz (); if (a) #pragma omp target #pragma omp teams #pragma omp parallel { if (b) bar (); else baz (); } } void f4 (void) { if (a) /* { dg-warning "ambiguous" } */ #pragma omp target data map (tofrom: b) if (b) bar (); else baz (); if (a) #pragma omp target data map (tofrom: b) { if (b) bar (); else baz (); } }