Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/ext/atomic-3.C @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 // PR c++/71675 - __atomic_compare_exchange_n returns wrong type for typed enum | |
2 // { dg-do compile { target c++11 } } | |
3 | |
4 template <class T> | |
5 void sink (T); | |
6 | |
7 bool sink (bool); | |
8 | |
9 template <class T> | |
10 bool test () | |
11 { | |
12 enum class E: T { }; | |
13 static E e; | |
14 | |
15 return sink (__atomic_compare_exchange_n (&e, &e, e, false, 0, 0)); | |
16 } | |
17 | |
18 void tests () | |
19 { | |
20 // __atomic_compare_exchange_n would fail to return bool when | |
21 // its arguments were one of the three character types. | |
22 test<char>(); | |
23 test<signed char>(); | |
24 test<unsigned char>(); | |
25 | |
26 test<short>(); | |
27 test<unsigned short>(); | |
28 | |
29 test<int>(); | |
30 test<unsigned int>(); | |
31 | |
32 test<long>(); | |
33 test<unsigned long>(); | |
34 | |
35 test<long long>(); | |
36 test<unsigned long long>(); | |
37 } |