blob: 4420d670bde321cbc4203beda6f0d667770b8632 [file] [log] [blame]
/* PR c/70436 */
/* { dg-additional-options "-Wparentheses" } */
int a, b, c;
void bar (void);
void baz (void);
void
f1 (void)
{
int i, j;
if (a) /* { dg-warning "ambiguous" } */
#pragma omp for
for (i = 0; i < 10; i++)
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
while (1)
#pragma omp for
for (i = 0; i < 10; i++)
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
for (i = 0; i < 10; i++)
#pragma omp for
for (j = 0; j < 10; j++)
if (b)
bar ();
else
baz ();
if (a)
#pragma omp 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 taskloop
for (i = 0; i < 10; i++)
if (b)
#pragma omp parallel for
for (j = 0; j < 10; j++)
if (c)
bar ();
else
baz ();
else
bar ();
if (a) /* { dg-warning "ambiguous" } */
#pragma omp taskloop simd
for (i = 0; i < 10; i++)
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
#pragma omp for 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 critical
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
for (i = 0; i < 10; i++)
#pragma omp simd
for (j = 0; j < 10; j++)
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
#pragma omp for simd schedule(runtime)
for (i = 0; i < 10; i++)
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
#pragma omp master
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
#pragma omp parallel
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
for (i = 0; i < 10; i++)
#pragma omp parallel for
for (j = 0; j < 10; j++)
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
for (i = 0; i < 10; i++)
#pragma omp parallel for simd
for (j = 0; j < 10; j++)
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
#pragma omp single
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
#pragma omp task
if (b)
bar ();
else
baz ();
if (a) /* { dg-warning "ambiguous" } */
#pragma omp taskgroup
if (b)
bar ();
else
baz ();
if (a)
#pragma omp for
for (i = 0; i < 10; i++)
{
if (b)
bar ();
else
baz ();
}
if (a)
{
#pragma omp taskloop
for (i = 0; i < 10; ++i)
if (b)
bar ();
}
else baz ();
if (a)
#pragma omp for collapse(2)
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
if (b)
bar ();
else
baz ();
}
if (a)
#pragma omp critical
{
if (b)
bar ();
else
baz ();
}
if (a)
for (i = 0; i < 10; i++)
#pragma omp simd
for (j = 0; j < 10; j++)
{
if (b)
bar ();
}
else
baz ();
if (a)
#pragma omp for simd schedule(dynamic, 5)
for (i = 0; i < 10; i++)
{
if (b)
bar ();
else
baz ();
}
if (a)
#pragma omp master
{
if (b)
bar ();
else
baz ();
}
if (a)
#pragma omp parallel
{
if (b)
bar ();
else
baz ();
}
if (a)
{
#pragma omp parallel
if (b)
bar ();
else
baz ();
}
if (a)
for (i = 0; i < 10; i++)
#pragma omp parallel for
for (j = 0; j < 10; j++)
{
if (b)
bar ();
}
else
baz ();
if (a)
for (i = 0; i < 10; i++)
#pragma omp parallel for simd
for (j = 0; j < 10; j++)
{
if (b)
bar ();
}
else
baz ();
if (a)
#pragma omp single
{
if (b)
bar ();
}
else
baz ();
if (a)
#pragma omp task
{
if (b)
bar ();
}
else
baz ();
if (a)
#pragma omp taskgroup
{
if (b)
bar ();
else
baz ();
}
if (a)
#pragma omp taskloop simd
for (i = 0; i < 10; i++)
{
if (b)
bar ();
else
baz ();
}
}
void
f2 (int d, int e, int f)
{
if (a) /* { dg-warning "ambiguous" } */
#pragma omp ordered
if (b)
bar ();
else
baz ();
if (d) /* { dg-warning "ambiguous" } */
#pragma omp ordered threads
if (b)
bar ();
else
baz ();
if (e)
#pragma omp ordered
{
if (b)
bar ();
else
baz ();
}
if (f)
#pragma omp ordered threads
{
if (b)
bar ();
else
baz ();
}
}