(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
gomp/
pr102640.c
       1  /* PR c++/102640 */
       2  /* { dg-do compile } */
       3  /* { dg-additional-options "-fdump-tree-gimple -fdump-tree-omplower" } */
       4  /* Verify var[123] are mapped without any copying, because they are
       5     mentioned in declare target directive to clauses.  */
       6  /* { dg-final { scan-tree-dump-not "firstprivate\\\(var\[123]\\\)" "gimple" } } */
       7  /* { dg-final { scan-tree-dump-not ".omp_data_arr.\[0-9]*.var" "omplower" } } */
       8  /* { dg-final { scan-tree-dump-not ".omp_data_i->var" "omplower" } } */
       9  
      10  void
      11  foo (void)
      12  {
      13    extern int var1;
      14    #pragma omp declare target to (var1)
      15  
      16    #pragma omp target
      17    var1++;
      18  }
      19  
      20  int
      21  bar (int x)
      22  {
      23    extern int var2;
      24    #pragma omp declare target to (var2)
      25    if (x)
      26      return var2;
      27    #pragma omp target
      28    var2++;
      29    return -1;
      30  }
      31  #pragma omp declare target to (bar)
      32  
      33  #pragma omp declare target
      34  int
      35  baz (int x)
      36  {
      37    extern int var3;
      38    if (x)
      39      return var3;
      40    #pragma omp target
      41    var3++;
      42    return -1;
      43  }
      44  #pragma omp end declare target