mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			37 lines
		
	
	
		
			562 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			562 B
		
	
	
	
		
			C
		
	
	
	
| /* PR middle-end/52547 */
 | |
| /* { dg-do run } */
 | |
| 
 | |
| extern void abort (void);
 | |
| 
 | |
| __attribute__((noinline, noclone)) int
 | |
| baz (int *x, int (*fn) (int *))
 | |
| {
 | |
|   return fn (x);
 | |
| }
 | |
| 
 | |
| __attribute__((noinline, noclone)) int
 | |
| foo (int x, int *y)
 | |
| {
 | |
|   int i, e = 0;
 | |
| #pragma omp parallel for reduction(|:e)
 | |
|   for (i = 0; i < x; ++i)
 | |
|     {
 | |
|       __label__ lab;
 | |
|       int bar (int *z) { return z - y; }
 | |
|       if (baz (&y[i], bar) != i)
 | |
| 	e |= 1;
 | |
|     }
 | |
|   return e;
 | |
| }
 | |
| 
 | |
| int
 | |
| main ()
 | |
| {
 | |
|   int a[100], i;
 | |
|   for (i = 0; i < 100; i++)
 | |
|     a[i] = i;
 | |
|   if (foo (100, a))
 | |
|     abort ();
 | |
|   return 0;
 | |
| }
 |