diff options
Diffstat (limited to 'validation')
| -rw-r--r-- | validation/bitwise-cast.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/validation/bitwise-cast.c b/validation/bitwise-cast.c new file mode 100644 index 00000000..baeca29e --- /dev/null +++ b/validation/bitwise-cast.c @@ -0,0 +1,44 @@ +typedef unsigned int u32; +typedef u32 __attribute__((bitwise)) __be32; + +/* Implicit casts of 0, legal */ +static __be32 foo(void) +{ + __be32 x = 0; + + return 0; +} + +/* Explicit cast of 0, legal */ +static __be32 bar(void) +{ + return (__be32)0; +} + +/* Implicit casts of nonzero, bad */ +static __be32 baz(void) +{ + __be32 x = 0x2a; + + return 99; +} + +/* Explicit cast of nonzero, bad */ +static __be32 quux(void) +{ + return (__be32)1729; +} + +/* + * check-name: conversions to bitwise types + * check-command: sparse -Wbitwise $file + * check-error-start +bitwise-cast.c:21:20: warning: incorrect type in initializer (different base types) +bitwise-cast.c:21:20: expected restricted __be32 [usertype] x +bitwise-cast.c:21:20: got int +bitwise-cast.c:23:16: warning: incorrect type in return expression (different base types) +bitwise-cast.c:23:16: expected restricted __be32 +bitwise-cast.c:23:16: got int +bitwise-cast.c:29:17: warning: cast to restricted __be32 + * check-error-end + */ |
