1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /* { 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;
- }
|