Hello! I think sparse should distinguish between safe and unsafe preprocessor operations on undefined symbols. For instance, "#if SYMBOL" has a very specific meaning, namely in enables the subsequent code is SYMBOL is defined and not equal 0. Implementing this in a "sparse friendly way" would be "#if defined(SYMBOL) && SYMBOL", which is longer and more prone to errors (the same symbol is used once, and nobody will warn in the first instance is mistyped). Some projects use configuration files with entries like "#define FEATURE 1". Some users will replace "1" with "0", some users will comment it out. Supporting both requires "#if FEATURE", as opposed to "#ifdef FEATURE", or somebody will be bitterly surprised that his or her edits had no effect. On the other hand, "#if FOO > BAR" is highly suspicious if FOO is undefined. Maybe sparse could allow boolean (and only boolean) operations on undefined cpp symbols? Unlike Linux kernel, the cases of "#if SYMBOL" with undefined SYMBOL exist in glibc and other system libraries. Relaxing sparse check would make sparse more useful for checking other software. -- Regards, Pavel Roskin - 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