• M
    module: LLVMLinux: Remove unused function warning from __param_check macro · 0283f9a5
    Mark Charlebois 提交于
    This code makes a compile time type check that is optimized away. Clang
    complains that it generates an unused function:
    
    linux/kernel/panic.c:471:1: warning: unused function '__check_panic'
          [-Wunused-function]
    core_param(panic, panic_timeout, int, 0644);
    ^
    linux/moduleparam.h:283:2: note: expanded from macro
          'core_param'
            param_check_##type(name, &(var));                               \
            ^
    <scratch space>:87:1: note: expanded from here
    param_check_int
    ^
    linux/moduleparam.h:369:34: note: expanded from macro
          'param_check_int'
    #define param_check_int(name, p) __param_check(name, p, int)
                                     ^
    linux/moduleparam.h:349:22: note: expanded from macro
          '__param_check'
            static inline type *__check_##name(void) { return(p); }
                                ^
    <scratch space>:88:1: note: expanded from here
    __check_panic
    
    GCC won't complain for a static inline function but would if it was just
    a static function.
    
    Adding the unused attribute to the function declaration removes the warning.
    Per request from Rusty Russell it is marked as __always_unused as the code
    is meant to be optimized away.
    
    This code works for both GCC and clang.
    Signed-off-by: NMark Charlebois <charlebm@gmail.com>
    Signed-off-by: NBehan Webster <behanw@converseincode.com>
    Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
    0283f9a5
moduleparam.h 16.4 KB