blob: 0583461cb745493b5cae349c2f971fbdcb53f9d5 [file] [log] [blame]
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;
}
/* Explicit case of nonzero forced, legal */
static __be32 quuy(void)
{
return (__attribute__((force)) __be32) 1730;
}
/*
* 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
*/