On Thu, Jun 21, 2012 at 6:45 PM, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > >> I wonder if I should make sparse warn about any casts to/from enums. >> They tend to always be wrong. > > I think it would be worth trying, see how much fallout there is. Also > casts from "enum a" to "enum b". We've had a few of those, > unintentionally. Ugh. We have this all over. Well, at least in multiple places. Like <linux/personality.h>, which does things like PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT, where PER_LINUX_32BIT is one enum, and ADDR_LIMIT_32BIT is a different one. And things like WORK_STRUCT_PENDING = 1 << WORK_STRUCT_PENDING_BIT, in <linux/workqueue.h> is similar. Sure, my quick warning generator gives lots of extraneous warnings, and it complains about the above kind of "mixing enum with int" behavior, but the above is a very real example of casting an enum to an integer. And we *want* it to happen in the above cases. I'll see what it looks like if I only warn about casting *to* an enum. Linus -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href