On 18.02.2016 05:37, Keller, Jacob E wrote: > Hi, > >> -----Original Message----- >> From: [email protected] [mailto:linux-kernel- >> [email protected]] On Behalf Of Krzysztof Kozlowski >> Sent: Wednesday, February 17, 2016 12:11 AM >> To: Sangbeom Kim <[email protected]>; Krzysztof Kozlowski >> <[email protected]>; Liam Girdwood <[email protected]>; >> Mark Brown <[email protected]>; [email protected]; linux- >> [email protected] >> Cc: Arnd Bergmann <[email protected]> >> Subject: [RFT] regulator: s2mps11: Simplify expression used in >> BUILD_BUG_ON for some of preprocessors >> >> Apparently some preprocessors have problems with interpreting >> BUILD_BUG_ON such as: >> var = ARRAY_SIZE(s2mps15_regulators); >> BUILD_BUG_ON(S2MPS_REGULATOR_MAX < var); >> so let make it more obvious for them. >> > > Doesn't have much to do with the preprocessor, but rather exactly how the > compiler optimizes the variable. Some kernel configurations also impact this, > and it heavily depends on whether the compiler actually optimizes away the > variable. BUILD_BUG_ON may work a lot of the time, depending heavily on the > compiler. > > BUILD_BUG_ON only works for constant expressions, so it is safer to put the > value in directly, because using a variable will only work if the compiler > optimizes the use of a variable away entirely. In this case it is somewhat > surprising that it doesn't, but would depend on what compiler version and > what kernel build rules you were using. For example allmodconfig ends up > selecting everything yes if it's not a module for kernel build options and > results in some BUILD_BUG_ON failures because of that)
Right, thanks for detailed explanation. Arnd confirmed that patch fixes encountered issue (gcc 4.9 with UBSAN). I'll change the commit message and re-submit. Best regards, Krzysztof

