1*c85f09ccSJohn Levon #define __bitwise __attribute__((bitwise))
2*c85f09ccSJohn Levon #define __force   __attribute__((force))
3*c85f09ccSJohn Levon 
4*c85f09ccSJohn Levon typedef long long __bitwise bits;
5*c85f09ccSJohn Levon 
6*c85f09ccSJohn Levon enum a {
7*c85f09ccSJohn Levon 	AR = (__force bits) 0,
8*c85f09ccSJohn Levon 	AP = 0,
9*c85f09ccSJohn Levon 	AS = (__force bits) 1,
10*c85f09ccSJohn Levon 	AQ = 1,
11*c85f09ccSJohn Levon };
12*c85f09ccSJohn Levon _Static_assert(sizeof(AP) == sizeof(int), "is bad?");
13*c85f09ccSJohn Levon 
14*c85f09ccSJohn Levon enum b {
15*c85f09ccSJohn Levon 	BP = 0,
16*c85f09ccSJohn Levon 	BR = (__force bits) 0,
17*c85f09ccSJohn Levon 	BQ = 1,
18*c85f09ccSJohn Levon 	BS = (__force bits) 1,
19*c85f09ccSJohn Levon };
20*c85f09ccSJohn Levon _Static_assert(sizeof(BP) == sizeof(int), "is bad?");
21*c85f09ccSJohn Levon 
22*c85f09ccSJohn Levon /*
23*c85f09ccSJohn Levon  * check-name: enum-bitwise-mixed
24*c85f09ccSJohn Levon  *
25*c85f09ccSJohn Levon  * check-error-start
26*c85f09ccSJohn Levon enum-bitwise-mixed.c:8:14: warning: mixed bitwiseness
27*c85f09ccSJohn Levon enum-bitwise-mixed.c:16:15: warning: mixed bitwiseness
28*c85f09ccSJohn Levon  * check-error-end
29*c85f09ccSJohn Levon  */
30