1  // { dg-additional-options "-fdump-tree-gimple" }
       2  
       3  // Remove the comments from the reduction test
       4  // after the FE learns that reduction variables may appear in data clauses too.
       5  
       6  void
       7  test ()
       8  {
       9    int a[100], i, j, z;
      10  
      11    // acc parallel
      12  
      13    #pragma acc parallel loop collapse (2)
      14    for (i = 0; i < 100; i++)
      15      for (j = 0; j < 10; j++)
      16        ;
      17  
      18    #pragma acc parallel loop gang
      19    for (i = 0; i < 100; i++)
      20      ;
      21  
      22    #pragma acc parallel loop worker
      23    for (i = 0; i < 100; i++)
      24      for (j = 0; j < 10; j++)
      25        ;
      26  
      27    #pragma acc parallel loop vector
      28    for (i = 0; i < 100; i++)
      29      for (j = 0; j < 10; j++)
      30        ;
      31  
      32    #pragma acc parallel loop seq
      33    for (i = 0; i < 100; i++)
      34      for (j = 0; j < 10; j++)
      35        ;
      36  
      37    #pragma acc parallel loop auto
      38    for (i = 0; i < 100; i++)
      39      for (j = 0; j < 10; j++)
      40        ;
      41  
      42    #pragma acc parallel loop tile (2, 3)
      43    for (i = 0; i < 100; i++)
      44      for (j = 0; j < 10; j++)
      45        ;
      46  
      47    #pragma acc parallel loop independent
      48    for (i = 0; i < 100; i++)
      49      ;
      50  
      51    #pragma acc parallel loop private (z)
      52    for (i = 0; i < 100; i++)
      53      z = 0;
      54  
      55  //  #pragma acc parallel loop reduction (+:z) copy (z)
      56  //  for (i = 0; i < 100; i++)
      57  //    ;
      58  
      59    // acc kernels
      60  
      61    #pragma acc kernels loop collapse (2)
      62    for (i = 0; i < 100; i++)
      63      for (j = 0; j < 10; j++)
      64        ;
      65  
      66    #pragma acc kernels loop gang
      67    for (i = 0; i < 100; i++)
      68      ;
      69  
      70    #pragma acc kernels loop worker
      71    for (i = 0; i < 100; i++)
      72      for (j = 0; j < 10; j++)
      73        ;
      74  
      75    #pragma acc kernels loop vector
      76    for (i = 0; i < 100; i++)
      77      for (j = 0; j < 10; j++)
      78        ;
      79  
      80    #pragma acc kernels loop seq
      81    for (i = 0; i < 100; i++)
      82      for (j = 0; j < 10; j++)
      83        ;
      84  
      85    #pragma acc kernels loop auto
      86    for (i = 0; i < 100; i++)
      87      for (j = 0; j < 10; j++)
      88        ;
      89  
      90    #pragma acc kernels loop tile (2, 3)
      91    for (i = 0; i < 100; i++)
      92      for (j = 0; j < 10; j++)
      93        ;
      94  
      95    #pragma acc kernels loop independent
      96    for (i = 0; i < 100; i++)
      97      ;
      98  
      99    #pragma acc kernels loop private (z)
     100    for (i = 0; i < 100; i++)
     101      z = 0;
     102  
     103  //  #pragma acc kernels loop reduction (+:z) copy (z)
     104  //  for (i = 0; i < 100; i++)
     105  //    ;
     106  }
     107  
     108  // { dg-final { scan-tree-dump-times "acc loop collapse.2. private.j. private.i" 2 "gimple" } }
     109  // { dg-final { scan-tree-dump-times "acc loop gang" 2 "gimple" } }
     110  // { dg-final { scan-tree-dump-times "acc loop worker" 2 "gimple" } }
     111  // { dg-final { scan-tree-dump-times "acc loop vector" 2 "gimple" } }
     112  // { dg-final { scan-tree-dump-times "acc loop seq" 2 "gimple" } }
     113  // { dg-final { scan-tree-dump-times "acc loop auto" 2 "gimple" } }
     114  // { dg-final { scan-tree-dump-times "acc loop tile.2, 3" 2 "gimple" } }
     115  // { dg-final { scan-tree-dump-times "acc loop independent private.i" 2 "gimple" } }
     116  // { dg-final { scan-tree-dump-times "private.z" 2 "gimple" } }