mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			926 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			926 B
		
	
	
	
		
			C
		
	
	
	
| /* { dg-additional-options "-fno-tree-switch-conversion" } */
 | |
| 
 | |
| #pragma omp declare target
 | |
| int
 | |
| foo (unsigned a)
 | |
| {
 | |
|   switch (a)
 | |
|     {
 | |
|     case 1 ... 5:
 | |
|       return 1;
 | |
|     case 9 ... 11:
 | |
|       return a + 3;
 | |
|     case 12 ... 13:
 | |
|       return a + 3;
 | |
|     default:
 | |
|       return 44;
 | |
|     }
 | |
| }
 | |
| #pragma omp end declare target
 | |
| 
 | |
| #define s 100
 | |
| 
 | |
| void __attribute__((noinline, noclone))
 | |
| verify(int *a)
 | |
| {
 | |
|   if (a[0] != 44)
 | |
|     __builtin_abort ();
 | |
|   
 | |
|   for (int i = 1; i <= 5; i++)
 | |
|     if (a[i] != 1)
 | |
|       __builtin_abort ();
 | |
| 
 | |
|   for (int i = 6; i <= 8; i++)
 | |
|     if (a[i] != 44)
 | |
|       __builtin_abort ();
 | |
| 
 | |
|   for (int i = 9; i <= 13; i++)
 | |
|     if (a[i] != i + 3)
 | |
|       __builtin_abort ();
 | |
| 
 | |
|   for (int i = 14; i < s; i++)
 | |
|     if (a[i] != 44)
 | |
|       __builtin_abort ();
 | |
| }
 | |
| 
 | |
| int main(int argc)
 | |
| {
 | |
|   int array[s];
 | |
| #pragma omp target
 | |
|   {
 | |
|     for (int i = 0; i < s; i++)
 | |
|       {
 | |
| 	int v = foo (i);
 | |
| 	array[i] = v;
 | |
|       }
 | |
|   }
 | |
|   verify (array);
 | |
|   return 0;
 | |
| }
 |