| #ifdef __cplusplus |
| extern "C" |
| #else |
| extern |
| #endif |
| void abort (void); |
| struct S { int s, t; }; |
| |
| void |
| foo () |
| { |
| int x = 5, y = 6, err = 0; |
| struct S u = { 7, 8 }, v = { 9, 10 }; |
| double s = 11.5, t = 12.5; |
| #pragma omp target private (x, u, s) firstprivate (y, v, t) map(from:err) |
| { |
| x = y; |
| u = v; |
| s = t; |
| err = (x != 6 || y != 6 |
| || u.s != 9 || u.t != 10 || v.s != 9 || v.t != 10 |
| || s != 12.5 || t != 12.5); |
| x += 1; |
| y += 2; |
| u.s += 3; |
| v.t += 4; |
| s += 2.5; |
| t += 3.0; |
| if (x != 7 || y != 8 |
| || u.s != 12 || u.t != 10 || v.s != 9 || v.t != 14 |
| || s != 15.0 || t != 15.5) |
| err = 1; |
| } |
| if (err || x != 5 || y != 6 |
| || u.s != 7 || u.t != 8 || v.s != 9 || v.t != 10 |
| || s != 11.5 || t != 12.5) |
| abort (); |
| } |
| |
| int |
| main () |
| { |
| foo (); |
| return 0; |
| } |