On Mon, 2014-09-22 at 19:13 +0200, Martin Walch wrote: > expr_eliminate_dups2() in scripts/kconfig/expr.c applies two bad > inference rules: > > (FOO || BAR) && (!FOO && !BAR) -> n > (FOO && BAR) || (!FOO || !BAR) -> y > > They would be correct in propositional logic, but this is a three-valued > logic, and here it is wrong in that it changes semantics. It becomes > immediately visible when substituting FOO and BAR with m. Well, not to me. When I apply the rules under "Menu dependencies" in Documentation/kbuild/kconfig-language.txt, in embarrassingly small steps, I get: (m || m) && (!m && !m) -> (1 || 1) && ((2 - 1) && (2 - 1)) -> (1 || 1) && (1 && 1) -> max(1, 1) && min(1, 1) -> 1 && 1 -> min(1, 1) -> 1 -> m and (m && m) || (!m || !m) -> (1 && 1) || ((2 - 1) || (2 - 1)) -> (1 && 1) || (1 || 1) -> min(1, 1) || max(1, 1) -> 1 || 1 -> max(1, 1) -> 1 -> m Did I do that right? Anyway, perhaps you'd like to add a line or two how these two expressions actually evaluate when FOO and BAR are m. > Fix it by removing expr_eliminate_dups2() and the functions that have no use > anywhere else: expr_extract_eq_and(), expr_extract_eq_or(), > and expr_extract_eq() from scripts/kconfig/expr.[ch] > > Currently the bug is not triggered in mainline, so this patch does not modify > the configuration space there. > > As a side effect, this reduces code size in expr.c by roughly 10% and slightly > improves startup time for all configuration frontends. > > Signed-off-by: Martin Walch <walch.martin@xxxxxx> Does Yann still care about Kconfig? Yann has been rather quiet for a while now. Paul Bolle -- To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html