diff options
| author | Masahiro Yamada <masahiroy@kernel.org> | 2024-07-08 00:38:04 +0900 | 
|---|---|---|
| committer | Masahiro Yamada <masahiroy@kernel.org> | 2024-07-16 16:07:14 +0900 | 
| commit | 8bfd6f0923cd7e48aa5d9e5a4e20af818a32c30a (patch) | |
| tree | 7ba8223d9e2d0836b21363f6b547e8fe2a549edb /drivers/usb/cdns3/cdns3-debug.h | |
| parent | d67015eedd9722cfbf9d929be743ce27dfcd0744 (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 'drivers/usb/cdns3/cdns3-debug.h')
0 files changed, 0 insertions, 0 deletions
