(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c/
atomic-11.c
       1  /* { dg-do run } */
       2  
       3  extern void abort (void);
       4  int x = 6;
       5  float y;
       6  
       7  int
       8  main (void)
       9  {
      10    int v;
      11    float f;
      12    #pragma omp atomic read
      13      v = x;
      14    if (v != 6)
      15      abort ();
      16    #pragma omp atomic write
      17      x = 17;
      18    #pragma omp atomic read
      19    v = x;
      20    if (v != 17)
      21      abort ();
      22    #pragma omp atomic update
      23      x++;
      24    #pragma omp atomic read
      25      v = x;
      26    if (v != 18)
      27      abort ();
      28    #pragma omp atomic capture
      29      v = x++;
      30    if (v != 18)
      31      abort ();
      32    #pragma omp atomic read
      33      v = x;
      34    if (v != 19)
      35      abort ();
      36    #pragma omp atomic capture
      37      v = ++x;
      38    if (v != 20)
      39      abort ();
      40    #pragma omp atomic read
      41      v = x;
      42    if (v != 20)
      43      abort ();
      44    #pragma omp atomic capture
      45      { v = x; x *= 3; }
      46    if (v != 20)
      47      abort ();
      48    #pragma omp atomic read
      49      v = x;
      50    if (v != 60)
      51      abort ();
      52    #pragma omp atomic capture
      53      {
      54        x |= 2;
      55        v = x;
      56      }
      57    if (v != 62)
      58      abort ();
      59    #pragma omp atomic read
      60      v = x;
      61    if (v != 62)
      62      abort ();
      63    #pragma omp atomic capture
      64      { v = x; x++; }
      65    if (v != 62)
      66      abort ();
      67    #pragma omp atomic capture
      68      { v = x; ++x; }
      69    if (v != 63)
      70      abort ();
      71    #pragma omp atomic capture
      72      {
      73        ++x;
      74        v = x;
      75      }
      76    if (v != 65)
      77      abort ();
      78  #pragma omp atomic capture
      79  {x++;v=x;}if (v != 66)
      80      abort ();
      81    #pragma omp atomic read
      82      v = x;
      83    if (v != 66)
      84      abort ();
      85    #pragma omp atomic capture
      86      { v = x; x--; }
      87    if (v != 66)
      88      abort ();
      89    #pragma omp atomic capture
      90      { v = x; --x; }
      91    if (v != 65)
      92      abort ();
      93    #pragma omp atomic capture
      94      {
      95        --x;
      96        v = x;
      97      }
      98    if (v != 63)
      99      abort ();
     100    #pragma omp atomic capture
     101    { x--; v = x; } if (v != 62)
     102      abort ();
     103    #pragma omp atomic read
     104      v = x;
     105    if (v != 62)
     106      abort ();
     107    #pragma omp atomic write
     108      y = 17.5f;
     109    #pragma omp atomic read
     110      f = y;
     111    if (f != 17.5)
     112      abort ();
     113    #pragma omp atomic update
     114      y *= 2.0f;
     115    #pragma omp atomic read
     116      f = y;
     117    if (y != 35.0)
     118      abort ();
     119    #pragma omp atomic capture
     120      f = y *= 2.0f;
     121    if (f != 70.0)
     122      abort ();
     123    #pragma omp atomic capture
     124      f = y++;
     125    if (f != 70.0)
     126      abort ();
     127    #pragma omp atomic read
     128      f = y;
     129    if (f != 71.0)
     130      abort ();
     131    #pragma omp atomic capture
     132      f = --y;
     133    if (f != 70.0)
     134      abort ();
     135    #pragma omp atomic read
     136      f = y;
     137    if (f != 70.0)
     138      abort ();
     139    #pragma omp atomic capture
     140      { f = y; y /= 2.0f; }
     141    if (f != 70.0)
     142      abort ();
     143    #pragma omp atomic read
     144      f = y;
     145    if (f != 35.0)
     146      abort ();
     147    #pragma omp atomic capture
     148      { y /= 2.0f; f = y; }
     149    if (f != 17.5)
     150      abort ();
     151    #pragma omp atomic read
     152      f = y;
     153    if (f != 17.5)
     154      abort ();
     155    return 0;
     156  }