(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
gomp/
_Atomic-1.c
       1  /* PR c/65467 */
       2  /* { dg-do compile } */
       3  /* { dg-additional-options "-std=c11" } */
       4  
       5  _Atomic int t;
       6  #pragma omp threadprivate (t)
       7  
       8  void
       9  foo (void)
      10  {
      11    _Atomic int a = 4, b = 0, c, d = 3, e;
      12    a++;
      13    #pragma omp parallel sections num_threads (a) shared (b) private (c) firstprivate (d) lastprivate (e)
      14    {
      15    #pragma omp section
      16      {
      17        a++;
      18        b++;
      19        c = 5;
      20        c++;
      21        d++;
      22        e = 9;
      23        e++;
      24      }
      25    #pragma omp section
      26      {
      27        a++;
      28        b++;
      29        c = 5;
      30        c++;
      31        d++;
      32        e = 3;
      33        e++;
      34      }
      35    }
      36    e++;
      37    t++;
      38    #pragma omp parallel copyin (t) private (e)
      39    {
      40      t++;
      41      e = t;
      42      #pragma omp single copyprivate (e)
      43      {
      44        e++;
      45      }
      46      e++;
      47    }
      48  }
      49  
      50  void
      51  bar (void)
      52  {
      53    int a[4];
      54    _Atomic int b = 1, c = 2, f = 8, g = 8, h = 0;
      55    _Atomic int d, e[3];
      56    int *_Atomic p;
      57    _Atomic int *_Atomic q;
      58    int i, j;
      59    p = a;
      60    q = e;
      61    #pragma omp target teams map (tofrom: a[b:c]) num_teams (b) thread_limit (c)
      62    a[1]++;
      63    #pragma omp target device(h)
      64    ;
      65    #pragma omp task depend (inout: a[b:c])
      66    ;
      67    #pragma omp task depend (out: d, e[b:c]) priority (b)
      68    ;
      69    #pragma omp task depend (out: p[b:c])
      70    ;
      71    #pragma omp task depend (out: q[b:c])
      72    ;
      73    #pragma omp taskloop num_tasks (c)
      74    for (i = 0; i < 16; i++)
      75      ;
      76    #pragma omp taskloop grainsize (c)
      77    for (i = 0; i < 16; i++)
      78      ;
      79    #pragma omp parallel for schedule (dynamic, b)
      80    for (i = 0; i < 16; i++)
      81      ;
      82    j = 0;
      83    #pragma omp simd linear(j:b)
      84    for (i = 0; i < 16; i++)
      85      j += b;
      86    j = 4;
      87    #pragma omp atomic read
      88    b = j;
      89    #pragma omp atomic write
      90    j = c;
      91    #pragma omp atomic
      92    j += c;
      93    #pragma omp atomic capture
      94    b = j += c;
      95    #pragma omp atomic capture
      96    b = ++j;
      97    #pragma omp atomic capture
      98    { b = j; j = c; }
      99    #pragma omp atomic capture
     100    { b = j; j++; }
     101    #pragma omp atomic capture
     102    { j *= c; b = j; }
     103  }