annotate gcc/testsuite/g++.dg/ext/atomic-3.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 // PR c++/71675 - __atomic_compare_exchange_n returns wrong type for typed enum
kono
parents:
diff changeset
2 // { dg-do compile { target c++11 } }
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 template <class T>
kono
parents:
diff changeset
5 void sink (T);
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 bool sink (bool);
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 template <class T>
kono
parents:
diff changeset
10 bool test ()
kono
parents:
diff changeset
11 {
kono
parents:
diff changeset
12 enum class E: T { };
kono
parents:
diff changeset
13 static E e;
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 return sink (__atomic_compare_exchange_n (&e, &e, e, false, 0, 0));
kono
parents:
diff changeset
16 }
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 void tests ()
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 // __atomic_compare_exchange_n would fail to return bool when
kono
parents:
diff changeset
21 // its arguments were one of the three character types.
kono
parents:
diff changeset
22 test<char>();
kono
parents:
diff changeset
23 test<signed char>();
kono
parents:
diff changeset
24 test<unsigned char>();
kono
parents:
diff changeset
25
kono
parents:
diff changeset
26 test<short>();
kono
parents:
diff changeset
27 test<unsigned short>();
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 test<int>();
kono
parents:
diff changeset
30 test<unsigned int>();
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 test<long>();
kono
parents:
diff changeset
33 test<unsigned long>();
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 test<long long>();
kono
parents:
diff changeset
36 test<unsigned long long>();
kono
parents:
diff changeset
37 }