On Fri, Sep 28, 2012 at 4:20 PM, Daniel Santos <daniel.santos@xxxxxxxxx> wrote: > BUILD_BUG_ON42(arg) > BUILD_BUG_ON_CONST42(arg) > > Prior to gcc 4.2, the optimizer was unable to determine that many > constant values stored in structs were indeed compile-time constants and > optimize them out. Sometimes, it will find an intergral value to be a > compile-time constant, but fail to perform a bit-wise AND at > compile-time. These two macros provide a mechanism to perform these > build-time checks, but not break on older compilers where we already > know they can't be checked at compile time. > > For specific details, consult the doc comments for BUILD_BUG_ON_CONST. > These macros are used in the generic rbtree code. I think the names are quite confusing. BUILD_BUG_ON_NON_CONST42 sounds like it's checking if 42 is a constant. The name probably shouldn't mention what compiler versions support this check, but instead it should hint as to when you should use this instead of BUILD_BUG_ON_CONST ? Maybe BUILD_BUG_ON_CONST_DEREF or something (I'm pretty bad with names too :) -- Michel "Walken" Lespinasse A program is never fully debugged until the last user dies. -- 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