1  /* { dg-do run } */
       2  /* { dg-options "-O2 -g" } */
       3  
       4  int cnt;
       5  
       6  __attribute__((noinline, noclone)) void
       7  bar (void)
       8  {
       9    cnt++;
      10  }
      11  
      12  #include "pr102566-1a.c"
      13  
      14  int a;
      15  long int b;
      16  unsigned long int c;
      17  unsigned short int d;
      18  
      19  int
      20  main ()
      21  {
      22    __atomic_store_n (&a, 15, __ATOMIC_RELAXED);
      23    if (f1 (&a, 2) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 15
      24        || f1 (&a, 4) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 31)
      25      __builtin_abort ();
      26    if (f2 (&a, 1) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 31
      27        || f2 (&a, 5) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 63)
      28      __builtin_abort ();
      29    __atomic_store_n (&b, 24, __ATOMIC_RELAXED);
      30    if (f3 (&b, 2) != 1 || __atomic_load_n (&b, __ATOMIC_RELAXED) != 28
      31        || f3 (&b, 3) != 0 || __atomic_load_n (&b, __ATOMIC_RELAXED) != 28)
      32      __builtin_abort ();
      33    __atomic_store_n (&a, 0, __ATOMIC_RELAXED);
      34    if (f4 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 128
      35        || f4 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 128)
      36      __builtin_abort ();
      37    if (f5 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8320
      38        || f5 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8320)
      39      __builtin_abort ();
      40    if (f6 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321
      41        || f6 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321)
      42      __builtin_abort ();
      43    if (cnt != 0
      44        || (f7 (&a, 7), cnt) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193
      45        || (f7 (&a, 7), cnt) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321)
      46      __builtin_abort ();
      47    if ((f8 (&a, 7), cnt) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193
      48        || (f8 (&a, 7), cnt) != 2 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321)
      49      __builtin_abort ();
      50    if (f9 (&a, 13) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 129
      51        || f9 (&a, 13) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321)
      52      __builtin_abort ();
      53    if (f10 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193
      54        || f10 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321)
      55      __builtin_abort ();
      56    if (f11 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 129
      57        || f11 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321)
      58      __builtin_abort ();
      59    if (f12 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8320
      60        || f12 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8321)
      61      __builtin_abort ();
      62    if (f13 (&a, 7) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193
      63        || f13 (&a, 7) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193)
      64      __builtin_abort ();
      65    if (f14 (&a, 13) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 1
      66        || f14 (&a, 13) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 1)
      67      __builtin_abort ();
      68    if (f15 (&a, 0) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 0
      69        || f15 (&a, 0) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 0)
      70      __builtin_abort ();
      71    __atomic_store_n (&a, 8321, __ATOMIC_RELAXED);
      72    if (f16 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193
      73        || f16 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 8193)
      74      __builtin_abort ();
      75    if (f17 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 1
      76        || f17 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 1)
      77      __builtin_abort ();
      78    if (f18 (&a) != 1 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 0
      79        || f18 (&a) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 0)
      80      __builtin_abort ();
      81    if (f19 (&c, 7) != 1 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 128
      82        || f19 (&c, 7) != 0 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 0)
      83      __builtin_abort ();
      84    if (f20 (&c) != 0 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 128
      85        || f20 (&c) != 1 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 0)
      86      __builtin_abort ();
      87    __atomic_store_n (&a, 128, __ATOMIC_RELAXED);
      88    if (f21 (&a, 4) != 0 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 144
      89        || f21 (&a, 4) != 16 || __atomic_load_n (&a, __ATOMIC_RELAXED) != 144)
      90      __builtin_abort ();
      91    __atomic_store_n (&c, 1, __ATOMIC_RELAXED);
      92    if (f22 (&c) != 128 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 129
      93        || f22 (&c) != 0 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 1)
      94      __builtin_abort ();
      95    if (f23 (&c) != 0 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 129
      96        || f23 (&c) != 128 || __atomic_load_n (&c, __ATOMIC_RELAXED) != 1)
      97      __builtin_abort ();
      98    if (f24 (&d) != 0 || __atomic_load_n (&d, __ATOMIC_RELAXED) != 128
      99        || f24 (&d) != 1 || __atomic_load_n (&d, __ATOMIC_RELAXED) != 128)
     100      __builtin_abort ();
     101    __atomic_store_n (&d, 1, __ATOMIC_RELAXED);
     102    if (f25 (&d) != 0 || __atomic_load_n (&d, __ATOMIC_RELAXED) != 129
     103        || f25 (&d) != 1 || __atomic_load_n (&d, __ATOMIC_RELAXED) != 129
     104        || cnt != 2)
     105      __builtin_abort ();
     106    return 0;
     107  }