typedef unsigned short __attribute__((bitwise))__le16; static __le16 foo(__le16 a) { return a |= ~a; } static int baz(__le16 a) { return ~a == ~a; } static int barf(__le16 a) { return a == (a & ~a); } static __le16 bar(__le16 a) { return -a; } /* * check-name: foul bitwise * check-error-start foul-bitwise.c:9:16: warning: restricted __le16 degrades to integer foul-bitwise.c:9:22: warning: restricted __le16 degrades to integer foul-bitwise.c:19:16: warning: restricted __le16 degrades to integer foul-bitwise.c:19:16: warning: incorrect type in return expression (different base types) foul-bitwise.c:19:16: expected restricted __le16 foul-bitwise.c:19:16: got int * check-error-end */