1  #define N 500
       2  
       3  int A[N+5][N+5][N+5];
       4  
       5  void abort (void);
       6  
       7  int foo (void)
       8  {
       9    int i, j, k;
      10  
      11    for (i = 0; i < N + 5; i++)
      12      for (j = 0; j < N + 5; j++)
      13        for (k = 0; k < N + 5; k++)
      14  	A[i][j][k] = i + j + k;
      15  
      16    /* Loop i: carried no dependency.  */
      17    for (i = 0; i < N; i++)
      18      for (j = 0; j < N; j++)
      19        for (k = 0; k < N; k++)
      20  	A[k+1][j+2][i+1] = A[k][j][i+1];
      21  
      22    return A[1][5][2];
      23  }
      24  
      25  int main (void)
      26  {
      27    if (5 != foo ())
      28      abort ();
      29  
      30    return 0;
      31  }
      32  
      33  /* Check that parallel code generation part make the right answer.  */
      34  /* { dg-final { scan-tree-dump-times "5 loops carried no dependency" 1 "graphite" } } */
      35  /* { dg-final { scan-tree-dump-times "loopfn.0" 4 "optimized" } } */