| /* { dg-do run } */ | |
| #include <stdlib.h> | |
| #define THRESHOLD 20 | |
| #pragma omp declare target | |
| int fib (int n) | |
| { | |
| if (n <= 0) | |
| return 0; | |
| else if (n == 1) | |
| return 1; | |
| else | |
| return fib (n - 1) + fib (n - 2); | |
| } | |
| #pragma omp end declare target | |
| int fib_wrapper (int n) | |
| { | |
| int x = 0; | |
| #pragma omp target if(n > THRESHOLD) map(from:x) | |
| x = fib (n); | |
| return x; | |
| } | |
| int main () | |
| { | |
| if (fib (15) != fib_wrapper (15)) | |
| abort (); | |
| if (fib (25) != fib_wrapper (25)) | |
| abort (); | |
| return 0; | |
| } |