annotate gcc/testsuite/gcc.dg/atomic-flag.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Test __atomic routines for existence and execution. */
kono
parents:
diff changeset
2 /* { dg-do run } */
kono
parents:
diff changeset
3 /* { dg-require-effective-target sync_char_short } */
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 /* Test that __atomic_test_and_set and __atomic_clear builtins execute. */
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 extern void abort(void);
kono
parents:
diff changeset
8 unsigned char a;
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 int
kono
parents:
diff changeset
11 main ()
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 int b;
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 __atomic_clear (&a, __ATOMIC_RELAXED);
kono
parents:
diff changeset
16 if (a != 0)
kono
parents:
diff changeset
17 abort ();
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 b = __atomic_test_and_set (&a, __ATOMIC_SEQ_CST);
kono
parents:
diff changeset
20 if (a != __GCC_ATOMIC_TEST_AND_SET_TRUEVAL || b != 0)
kono
parents:
diff changeset
21 abort ();
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 b = __atomic_test_and_set (&a, __ATOMIC_ACQ_REL);
kono
parents:
diff changeset
24 if (a != __GCC_ATOMIC_TEST_AND_SET_TRUEVAL || b != 1)
kono
parents:
diff changeset
25 abort ();
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 __atomic_clear (&a, __ATOMIC_SEQ_CST);
kono
parents:
diff changeset
28 if (a != 0)
kono
parents:
diff changeset
29 abort ();
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 return 0;
kono
parents:
diff changeset
32 }