Signed-off-by: Thiebaud Weksteen <tweek@xxxxxxxxxx> --- validation/bitwise-cast.c | 46 +++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/validation/bitwise-cast.c b/validation/bitwise-cast.c index baeca29..8eaabb7 100644 --- a/validation/bitwise-cast.c +++ b/validation/bitwise-cast.c @@ -18,8 +18,6 @@ static __be32 bar(void) /* Implicit casts of nonzero, bad */ static __be32 baz(void) { - __be32 x = 0x2a; - return 99; } @@ -29,16 +27,46 @@ static __be32 quux(void) return (__be32)1729; } +/* Explicit case of nonzero forced, legal */ +static __be32 quuy(void) +{ + return (__attribute__((force)) __be32) 1730; +} + +static u32 global_i = 31337; + +/* Implicit cast of pointer, bad */ +static __be32* quuz(void) +{ + u32* x = &global_i; + return x; +} + +/* Explicit cast of pointer, bad */ +static __be32* quva(void) +{ + u32* x = &global_i; + return (__be32 *) x; +} + +/* Explicit cast of pointer forced, legal */ +static __be32* quvb(void) +{ + u32* x = &global_i; + return (__attribute__((force)) __be32 *) x; +} + /* * 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 +bitwise-cast.c:22:16: warning: incorrect type in return expression (different base types) +bitwise-cast.c:22:16: expected restricted __be32 +bitwise-cast.c:22:16: got int +bitwise-cast.c:28:17: warning: cast to restricted __be32 +bitwise-cast.c:43:16: warning: incorrect type in return expression (different base types) +bitwise-cast.c:43:16: expected restricted __be32 [usertype] * +bitwise-cast.c:43:16: got unsigned int [usertype] *x +bitwise-cast.c:50:17: warning: cast to restricted __be32 * * check-error-end */ -- 2.17.0.484.g0c8726318c-goog -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html