mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			501 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			501 B
		
	
	
	
		
			C
		
	
	
	
| /* { 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;
 | |
| }
 |