blob: cd045964dfe63df4b36199858dc810ff990484e8 [file] [log] [blame]
/* { dg-do run } */
enum memmodel {
MEMMODEL_RELAXED = 0
};
int
main (void)
{
int a, b;
a = 1;
__atomic_fetch_add (&a, 1, MEMMODEL_RELAXED);
if (a != 2)
__builtin_abort ();
a = 0;
__atomic_fetch_or (&a, 1, MEMMODEL_RELAXED);
if (a != 1)
__builtin_abort ();
a = 1;
b = -1;
b = __atomic_exchange_n (&a, 0, MEMMODEL_RELAXED);
if (a != 0)
__builtin_abort ();
if (b != 1)
__builtin_abort ();
a = 1;
b = -1;
{
int expected = a;
b = __atomic_compare_exchange_n (&a, &expected, 0, 0, MEMMODEL_RELAXED,
MEMMODEL_RELAXED);
}
if (a != 0)
__builtin_abort ();
if (b != 1)
__builtin_abort ();
a = 1;
__atomic_store_n (&a, 0, MEMMODEL_RELAXED);
if (a != 0)
__builtin_abort ();
return 0;
}