1typedef unsigned int u32; 2typedef u32 __attribute__((bitwise)) __be32; 3 4/* Implicit casts of 0, legal */ 5static __be32 foo(void) 6{ 7 __be32 x = 0; 8 9 return 0; 10} 11 12/* Explicit cast of 0, legal */ 13static __be32 bar(void) 14{ 15 return (__be32)0; 16} 17 18/* Implicit casts of nonzero, bad */ 19static __be32 baz(void) 20{ 21 __be32 x = 0x2a; 22 23 return 99; 24} 25 26/* Explicit cast of nonzero, bad */ 27static __be32 quux(void) 28{ 29 return (__be32)1729; 30} 31 32/* Explicit case of nonzero forced, legal */ 33static __be32 quuy(void) 34{ 35 return (__attribute__((force)) __be32) 1730; 36} 37 38/* 39 * check-name: conversions to bitwise types 40 * check-command: sparse -Wbitwise $file 41 * check-error-start 42bitwise-cast.c:21:20: warning: incorrect type in initializer (different base types) 43bitwise-cast.c:21:20: expected restricted __be32 [usertype] x 44bitwise-cast.c:21:20: got int 45bitwise-cast.c:23:16: warning: incorrect type in return expression (different base types) 46bitwise-cast.c:23:16: expected restricted __be32 47bitwise-cast.c:23:16: got int 48bitwise-cast.c:29:17: warning: cast to restricted __be32 49 * check-error-end 50 */ 51