All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: behanw@converseincode.com, khali@linux-fr.org, rostedt@goodmis.org
Cc: linux-kernel@vger.kernel.org, dwmw2@infradead.org,
	pageexec@freemail.hu, Mark Charlebois <charlebm@gmail.com>,
	Behan Webster <behanw@converseincode.com>
Subject: Re: [PATCH v3] module: LLVMLinux: Remove unused function warning from __param_check macro
Date: Mon, 17 Mar 2014 13:17:52 +1030	[thread overview]
Message-ID: <87d2hltuav.fsf@rustcorp.com.au> (raw)
In-Reply-To: <1394573091-4705-1-git-send-email-behanw@converseincode.com>

behanw@converseincode.com writes:
> From: Mark Charlebois <charlebm@gmail.com>
>
> This code makes a compile time type check that is optimized away. Clang
> complains that it generates an unused function:

Thanks, applied.

Cheers,
Rusty.

>
> 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: Mark Charlebois <charlebm@gmail.com>
> Signed-off-by: Behan Webster <behanw@converseincode.com>
> ---
>  include/linux/moduleparam.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
> index c3eb102..175f699 100644
> --- a/include/linux/moduleparam.h
> +++ b/include/linux/moduleparam.h
> @@ -346,7 +346,7 @@ static inline void destroy_params(const struct kernel_param *params,
>  /* The macros to do compile-time type checking stolen from Jakub
>     Jelinek, who IIRC came up with this idea for the 2.4 module init code. */
>  #define __param_check(name, p, type) \
> -	static inline type *__check_##name(void) { return(p); }
> +	static inline type __always_unused *__check_##name(void) { return(p); }
>  
>  extern struct kernel_param_ops param_ops_byte;
>  extern int param_set_byte(const char *val, const struct kernel_param *kp);
> -- 
> 1.8.3.2

      reply	other threads:[~2014-03-17  4:39 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-07 19:08 [PATCH] module: LLVMLinux: Remove unused function warning from __param_check macro behanw
2014-03-07 22:56 ` PaX Team
2014-03-08  0:52   ` Behan Webster
2014-03-08  1:25     ` PaX Team
2014-03-08  1:35       ` Stephen Boyd
2014-03-08  2:10         ` [PATCH v2] " behanw
2014-03-08  2:17           ` Joe Perches
2014-03-08  2:21             ` Behan Webster
2014-03-11  6:11 ` [PATCH] " Rusty Russell
2014-03-11  7:00   ` Behan Webster
2014-03-11 21:24   ` [PATCH v3] " behanw
2014-03-17  2:47     ` Rusty Russell [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87d2hltuav.fsf@rustcorp.com.au \
    --to=rusty@rustcorp.com.au \
    --cc=behanw@converseincode.com \
    --cc=charlebm@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=khali@linux-fr.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pageexec@freemail.hu \
    --cc=rostedt@goodmis.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.