blob: 4a1675cf2f54bc4a6049f61adab60485af636eab (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/* PR c++/71675 - __atomic_compare_exchange_n returns wrong type for typed enum
*/
/* { dg-do compile { target c11 } } */
#define Test(T) \
do { \
static T x; \
int r [_Generic (__atomic_compare_exchange_n (&x, &x, x, 0, 0, 0), \
_Bool: 1, default: -1)]; \
(void)&r; \
} while (0)
void f (void)
{
/* __atomic_compare_exchange_n would fail to return _Bool when
its arguments were one of the three character types. */
Test (char);
Test (signed char);
Test (unsigned char);
Test (int);
Test (unsigned int);
Test (long);
Test (unsigned long);
Test (long long);
Test (unsigned long long);
typedef enum E { e } E;
Test (E);
}
|