1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -ftree-parallelize-loops=4 -fdump-tree-parloops2-details -fdump-tree-optimized" } */ 3 4 void abort (void); 5 6 unsigned int x[500][500]; 7 unsigned int y[500]; 8 unsigned int g_sum=0; 9 10 void __attribute__((noinline)) init(int i,int j)11init (int i, int j) 12 { 13 x[i][j]=1; 14 } 15 16 void __attribute__((noinline)) parloop(int N)17parloop (int N) 18 { 19 int i, j; 20 unsigned int sum; 21 22 /* Inner cycle is currently not supported, outer loop is not 23 parallelized. Inner reduction is detected, inner loop is 24 parallelized. */ 25 for (i = 0; i < N; i++) 26 { 27 sum = 0; 28 for (j = 0; j < N; j++) 29 sum += x[i][j]; 30 y[i]=sum; 31 } 32 g_sum = sum; 33 } 34 35 int main(void)36main (void) 37 { 38 int i, j; 39 for (i = 0; i < 500; i++) 40 for (j = 0; j < 500; j++) 41 init (i, j); 42 43 parloop (500); 44 45 return 0; 46 } 47 48 /* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops2" { xfail *-*-* } } } */ 49 /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */ 50