Messages in this thread | | | Date | Fri, 26 Sep 2014 19:55:06 -0500 | From | Felipe Balbi <> | Subject | Re: [PATCH] clk, ti, LLVMLinux: Move __init outside of type definition |
| |
On Fri, Sep 26, 2014 at 05:31:48PM -0700, Behan Webster wrote: > As written, the __init for ti_clk_get_div_table is in the middle of the return > type. > > The gcc documentation indicates that section attributes should be added to the > end of the function declaration: > > extern void foobar (void) __attribute__ ((section ("bar"))); > > However gcc seems to be very permissive with where attributes can be placed. > clang on the other hand isn't so permissive, and fails if you put the section > definition in the middle of the return type: > > drivers/clk/ti/divider.c:298:28: error: expected ';' after struct > static struct clk_div_table > ^ > ; > drivers/clk/ti/divider.c:298:1: warning: 'static' ignored on this > declaration [-Wmissing-declarations] > static struct clk_div_table > ^ > drivers/clk/ti/divider.c:299:9: error: type specifier missing, > defaults to 'int' [-Werror,-Wimplicit-int] > __init *ti_clk_get_div_table(struct device_node *node) > ~~~~~~ ^ > drivers/clk/ti/divider.c:345:9: warning: incompatible pointer types > returning 'struct clk_div_table *' from a function with result type 'int *' [-Wincompatible-pointer-types] > return table; > ^~~~~ > drivers/clk/ti/divider.c:419:9: warning: incompatible pointer types > assigning to 'const struct clk_div_table *' from 'int *' [-Wincompatible-pointer-types] > *table = ti_clk_get_div_table(node); > ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~ > 3 warnings and 2 errors generated. > > By convention, most of the kernel code puts section attributes between the > return type and function name. In the case where the return type is a pointer, > it's important to place the '*' on left of the __init. > > This updated code works for both gcc and clang. > > Signed-off-by: Behan Webster <behanw@converseincode.com> > Reviewed-by: Mark Charlebois <charlebm@gmail.com>
makes sense to me:
Reviewed-by: Felipe Balbi <balbi@ti.com>
I wonder if we should add this a Sparse or Coccinelle rule.
-- balbi [unhandled content-type:application/pgp-signature] | |