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