summaryrefslogtreecommitdiff
path: root/scripts/kconfig/preprocess.h
diff options
context:
space:
mode:
authorMasahiro Yamada <masahiroy@kernel.org>2024-07-08 00:38:04 +0900
committerMasahiro Yamada <masahiroy@kernel.org>2024-07-16 16:07:14 +0900
commit8bfd6f0923cd7e48aa5d9e5a4e20af818a32c30a (patch)
tree7ba8223d9e2d0836b21363f6b547e8fe2a549edb /scripts/kconfig/preprocess.h
parentd67015eedd9722cfbf9d929be743ce27dfcd0744 (diff)
kconfig: call expr_eliminate_yn() at least once in expr_eliminate_dups()
Kconfig simplifies expressions, but redundant '&&' and '||' operators involving constant symbols 'y' and 'n' are sometimes trimmed and sometimes not. [Test Code] config DEP def_bool y config A bool "A" depends on DEP && y config B bool "B" depends on DEP && y && y [Result] $ make helpnewconfig [ snip ] ----- There is no help available for this option. Symbol: A [=n] Type : bool Defined at Kconfig:4 Prompt: A Depends on: DEP [=y] && y [=y] Location: -> A (A [=n]) ----- ----- There is no help available for this option. Symbol: B [=n] Type : bool Defined at Kconfig:8 Prompt: B Depends on: DEP [=y] Location: -> B (B [=n]) ----- The dependency for A, 'DEP && y', remains as-is, while that for B, 'DEP && y && y', has been reduced to 'DEP'. Currently, expr_eliminate_dups() calls expr_eliminate_yn() only when trans_count != 0, in other words, only when expr_eliminate_dups1() has trimmed at least one leaf. It fails to trim a single '&& y', etc. To fix this inconsistent behavior, expr_eliminate_yn() should be called at least once even if no leaf has been trimmed. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Diffstat (limited to 'scripts/kconfig/preprocess.h')
0 files changed, 0 insertions, 0 deletions