On Thu, 2017-04-06 at 12:24 -0700, Matthias Kaehlcke wrote: > I agree that the code looks worse :( I hoped to find a fix using a > preprocessor condition but wasn't successful.
It's actually easy - just remove the 'default ""' from Kconfig, and then the symbol won't be defined at all if it doesn't get a proper value. Then you can ifdef the whole thing. > Some projects (like Chrome OS) build their kernel with all warnings > being treated as errors. Besides changing the 'offending' code the > alternatives are to disable the warning completely or to tell clang > not to use the builtin(s). IMO changing the code is the preferable > solution, especially since this is so far the only occurrence of the > warning that I have encountered. > > I used goto instead of nested ifs since other functions in this file > use the same pattern. If nested ifs are preferred I can change that. I don't really buy either argument. The warning is simply bogus - I'm very surprised you don't hit it with more similar macros or cases, like for example CONFIG_ENABLED(). Try git grep 'IS_ENABLED(' | grep '&&' and you'll find lots of places that seem like they should trigger this warning. You're advocating to make the code worse - not very significantly in this case, but still - just to quiet a compiler warning. johannes