blob: 11de7510b04257be760eb87ac47b82feb4c1ea09 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-additional-options "-std=c99" { target c } } */
int q, r, e;
__attribute__((noinline, noclone)) void
foo (long a, long b)
{
#pragma omp taskloop lastprivate (q) nogroup
for (long d = a; d < b; d += 2)
{
q = d;
if (d < 2 || d > 6 || (d & 1))
#pragma omp atomic
e |= 1;
}
}
__attribute__((noinline, noclone)) int
bar (int a, int b)
{
int q = 7;
#pragma omp taskloop lastprivate (q)
for (int d = a; d < b; d++)
{
if (d < 12 || d > 17)
#pragma omp atomic
e |= 1;
q = d;
}
return q;
}
int
main ()
{
#pragma omp parallel
#pragma omp single
{
foo (2, 7);
r = bar (12, 18);
}
if (q != 6 || r != 17 || e)
__builtin_abort ();
return 0;
}