blob: d44cdcd5756275367b50abe930326a2d8df4d427 [file] [log] [blame]
/* 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 ();
}
}