Skip to content
  • Nathan Chancellor's avatar
    clk: s2mps11: Add used attribute to s2mps11_dt_match · 9c940bbe
    Nathan Chancellor authored
    Clang warns after commit 8985167e
    
     ("clk: s2mps11: Fix matching when
    built as module and DT node contains compatible"):
    
    drivers/clk/clk-s2mps11.c:242:34: warning: variable 's2mps11_dt_match'
    is not needed and will not be emitted [-Wunneeded-internal-declaration]
    static const struct of_device_id s2mps11_dt_match[] = {
                                     ^
    1 warning generated.
    
    This warning happens when a variable is used in some construct that
    doesn't require a reference to that variable to be emitted in the symbol
    table; in this case, it's MODULE_DEVICE_TABLE, which only needs to hold
    the data of the variable, not the variable itself.
    
    $ nm -S drivers/clk/clk-s2mps11.o | rg s2mps11_dt_match
    00000078 000003d4 R __mod_of__s2mps11_dt_match_device_table
    
    Normally, with device ID table variables, it means that the variable
    just needs to be tied to the device declaration at the bottom of the
    file, like s2mps11_clk_id:
    
    $ nm -S drivers/clk/clk-s2mps11.o | rg s2mps11_clk_id
    00000000 00000078 R __mod_platform__s2mps11_clk_id_device_table
    00000000 00000078 r s2mps11_clk_id
    
    However, because the comment above this deliberately doesn't want this
    variable added to .of_match_table, we need to mark s2mps11_dt_match as
    __used to silence this warning. This makes it clear to Clang that the
    variable is used for something, even if a reference to it isn't being
    emitted.
    
    Signed-off-by: default avatarNathan Chancellor <natechancellor@gmail.com>
    Fixes: 8985167e
    
     ("clk: s2mps11: Fix matching when built as module and DT node contains compatible")
    Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
    9c940bbe