1  /* OpenACC default clause inside data construct.  */
       2  
       3  /* { dg-additional-options "-fdump-tree-gimple" } */
       4  
       5  void f1 ()
       6  {
       7    int f1_a = 2;
       8    float f1_b[2];
       9  
      10  #pragma acc data copyin (f1_a) copyout (f1_b)
      11    /* { dg-final { scan-tree-dump-times "omp target oacc_data map\\(from:f1_b \[^\\)\]+\\) map\\(to:f1_a" 1 "gimple" } } */
      12    {
      13  #pragma acc kernels
      14      /* { dg-final { scan-tree-dump-times "omp target oacc_kernels map\\(tofrom:f1_b \[^\\)\]+\\) map\\(tofrom:f1_a" 1 "gimple" } } */
      15      {
      16        f1_b[0] = f1_a;
      17      }
      18  #pragma acc parallel
      19      /* { dg-final { scan-tree-dump-times "omp target oacc_parallel map\\(tofrom:f1_b \[^\\)\]+\\) map\\(tofrom:f1_a" 1 "gimple" } } */
      20      {
      21        f1_b[0] = f1_a;
      22      }
      23    }
      24  }
      25  
      26  void f2 ()
      27  {
      28    int f2_a = 2;
      29    float f2_b[2];
      30  
      31  #pragma acc data copyin (f2_a) copyout (f2_b)
      32    /* { dg-final { scan-tree-dump-times "omp target oacc_data map\\(from:f2_b \[^\\)\]+\\) map\\(to:f2_a" 1 "gimple" } } */
      33    {
      34  #pragma acc kernels default (none)
      35      /* { dg-final { scan-tree-dump-times "omp target oacc_kernels default\\(none\\) map\\(tofrom:f2_b \[^\\)\]+\\) map\\(tofrom:f2_a" 1 "gimple" } } */
      36      {
      37        f2_b[0] = f2_a;
      38      }
      39  #pragma acc parallel default (none)
      40      /* { dg-final { scan-tree-dump-times "omp target oacc_parallel default\\(none\\) map\\(tofrom:f2_b \[^\\)\]+\\) map\\(tofrom:f2_a" 1 "gimple" } } */
      41      {
      42        f2_b[0] = f2_a;
      43      }
      44    }
      45  }
      46  
      47  void f3 ()
      48  {
      49    int f3_a = 2;
      50    float f3_b[2];
      51  
      52  #pragma acc data copyin (f3_a) copyout (f3_b)
      53    /* { dg-final { scan-tree-dump-times "omp target oacc_data map\\(from:f3_b \[^\\)\]+\\) map\\(to:f3_a" 1 "gimple" } } */
      54    {
      55  #pragma acc kernels default (present)
      56      /* { dg-final { scan-tree-dump-times "omp target oacc_kernels default\\(present\\) map\\(tofrom:f3_b \[^\\)\]+\\) map\\(tofrom:f3_a" 1 "gimple" } } */
      57      {
      58        f3_b[0] = f3_a;
      59      }
      60  #pragma acc parallel default (present)
      61      /* { dg-final { scan-tree-dump-times "omp target oacc_parallel default\\(present\\) map\\(tofrom:f3_b \[^\\)\]+\\) map\\(tofrom:f3_a" 1 "gimple" } } */
      62      {
      63        f3_b[0] = f3_a;
      64      }
      65    }
      66  }