1  /* PR c++/98187 */
       2  /* { dg-do compile } */
       3  /* { dg-options "-fopenmp-simd -O2 -fdump-tree-gimple" } */
       4  /* { dg-final { scan-tree-dump-times "#pragma omp simd" 17 "gimple" } } */
       5  
       6  void
       7  foo (int *p)
       8  {
       9    int i;
      10    #pragma omp distribute parallel for
      11    for (i = 0; i < 64; i++)
      12      p[i]++;
      13    #pragma omp distribute parallel for simd
      14    for (i = 0; i < 64; i++)
      15      p[i]++;
      16    #pragma omp distribute simd
      17    for (i = 0; i < 64; i++)
      18      p[i]++;
      19  }
      20  
      21  void
      22  bar (int *p)
      23  {
      24    int i;
      25    #pragma omp for simd
      26    for (i = 0; i < 64; i++)
      27      p[i]++;
      28    #pragma omp master taskloop
      29    for (i = 0; i < 64; i++)
      30      p[i]++;
      31    #pragma omp master taskloop simd
      32    for (i = 0; i < 64; i++)
      33      p[i]++;
      34    #pragma omp parallel for
      35    for (i = 0; i < 64; i++)
      36      p[i]++;
      37    #pragma omp parallel for simd
      38    for (i = 0; i < 64; i++)
      39      p[i]++;
      40    #pragma omp parallel loop
      41    for (i = 0; i < 64; i++)
      42      p[i]++;
      43    #pragma omp parallel master
      44    p[0]++;
      45    #pragma omp parallel master taskloop
      46    for (i = 0; i < 64; i++)
      47      p[i]++;
      48    #pragma omp parallel master taskloop simd
      49    for (i = 0; i < 64; i++)
      50      p[i]++;
      51    #pragma omp parallel sections
      52    {
      53      p[0]++;
      54      #pragma omp section
      55      p[1]++;
      56      #pragma omp section
      57      p[2]++;
      58    }
      59    #pragma omp target parallel
      60    #pragma omp master
      61    p[0]++;
      62    #pragma omp target parallel for
      63    for (i = 0; i < 64; i++)
      64      p[i]++;
      65    #pragma omp target parallel for simd
      66    for (i = 0; i < 64; i++)
      67      p[i]++;
      68    #pragma omp target parallel loop
      69    for (i = 0; i < 64; i++)
      70      p[i]++;
      71    #pragma omp target teams private (i)
      72    i = 0;
      73    #pragma omp target teams distribute
      74    for (i = 0; i < 64; i++)
      75      p[i]++;
      76    #pragma omp target teams distribute parallel for
      77    for (i = 0; i < 64; i++)
      78      p[i]++;
      79    #pragma omp target teams distribute parallel for simd
      80    for (i = 0; i < 64; i++)
      81      p[i]++;
      82    #pragma omp target teams distribute simd
      83    for (i = 0; i < 64; i++)
      84      p[i]++;
      85    #pragma omp target teams loop
      86    for (i = 0; i < 64; i++)
      87      p[i]++;
      88    #pragma omp target simd
      89    for (i = 0; i < 64; i++)
      90      p[i]++;
      91    #pragma omp taskloop simd
      92    for (i = 0; i < 64; i++)
      93      p[i]++;
      94    #pragma omp teams distribute
      95    for (i = 0; i < 64; i++)
      96      p[i]++;
      97    #pragma omp teams distribute parallel for
      98    for (i = 0; i < 64; i++)
      99      p[i]++;
     100    #pragma omp teams distribute parallel for simd
     101    for (i = 0; i < 64; i++)
     102      p[i]++;
     103    #pragma omp teams distribute simd
     104    for (i = 0; i < 64; i++)
     105      p[i]++;
     106    #pragma omp teams loop
     107    for (i = 0; i < 64; i++)
     108      p[i]++;
     109  }