| /* { dg-do run } */ | |
| #pragma omp begin declare target indirect | |
| int foo(void) { return 5; } | |
| int bar(void) { return 8; } | |
| int baz(void) { return 11; } | |
| #pragma omp end declare target | |
| int main (void) | |
| { | |
| int x; | |
| int (*foo_ptr) (void) = &foo; | |
| int (*bar_ptr) (void) = &bar; | |
| int (*baz_ptr) (void) = &baz; | |
| int expected = foo () + bar () + baz (); | |
| #pragma omp target map (to: foo_ptr, bar_ptr, baz_ptr) map (from: x) | |
| x = (*foo_ptr) () + (*bar_ptr) () + (*baz_ptr) (); | |
| return x - expected; | |
| } |