| int baz (void); |
| void qux (int); |
| int r; |
| |
| int |
| foo (void) |
| { |
| int r = 0, i; |
| void bar (void) { r++; } |
| #pragma omp parallel for reduction(inscan, +:r) |
| for (i = 0; i < 64; i++) |
| { |
| r += baz (); |
| #pragma omp scan inclusive(r) |
| qux (r); |
| } |
| #pragma omp parallel for reduction(inscan, +:r) |
| for (i = 0; i < 64; i++) |
| { |
| qux (r); |
| #pragma omp scan exclusive(r) |
| r += baz (); |
| } |
| bar (); |
| return r; |
| } |
| |
| int |
| corge (void) |
| { |
| int r = 0, i; |
| void bar (void) |
| { |
| #pragma omp parallel for reduction(inscan, +:r) |
| for (i = 0; i < 64; i++) |
| { |
| r += baz (); |
| #pragma omp scan inclusive(r) |
| qux (r); |
| } |
| #pragma omp parallel for reduction(inscan, +:r) |
| for (i = 0; i < 64; i++) |
| { |
| qux (r); |
| #pragma omp scan exclusive(r) |
| r += baz (); |
| } |
| } |
| bar (); |
| return r; |
| } |