1  /* { dg-do compile } */
       2  /* { dg-options "-fopenmp -fdump-tree-omplower" } */
       3  
       4  /* Test depend(sink) clause folding.  */
       5  
       6  int i,j,k, N;
       7  
       8  extern void bar();
       9  
      10  void
      11  funk ()
      12  {
      13  #pragma omp parallel for ordered(3)
      14    for (i=0; i < N; i++)
      15      for (j=0; j < N; ++j)
      16        for (k=0; k < N; ++k)
      17      {
      18  /* We remove the (sink:i,j-1,k) by virtue of it the i+0.  The remaining
      19     clauses get folded with a GCD of -2 for `i' and a maximum of -2, +2 for
      20     'j' and 'k'.  */
      21  #pragma omp ordered \
      22    depend(sink:i-8,j-2,k+2) \
      23    depend(sink:i, j-1,k) \
      24    depend(sink:i-4,j-3,k+6) \
      25    depend(sink:i-6,j-4,k-6)
      26          bar();
      27  #pragma omp ordered depend(source)
      28      }
      29  }
      30  
      31  /* { dg-final { scan-tree-dump-times "omp ordered depend\\(sink:i-2,j-2,k\\+2\\)" 1 "omplower" { xfail *-*-* } } } */