Subject: Re: linux-next: Tree for Jun 20 (hweight return type)

From: Randy Dunlap <[email-masked]>
Date: Wed, 20 Jun 2012 18:10:09 -0700

On 06/20/2012 12:35 AM, Stephen Rothwell wrote:

> Hi all,
> Changes since 20120619:

Someone changes the return type of __const_hweight8() to
(unsigned long).  That causes printk format warnings when
hweight8/16() etc. is passed a constant:

drivers/input/joystick/analog.c:412:4: warning: format '%d' expects type 'int', but argument 4 has type 'long unsigned int'
drivers/input/joystick/analog.c:412:4: warning: format '%d' expects type 'int', but argument 5 has type 'long unsigned int'
drivers/input/joystick/analog.c:416:5: warning: format '%d' expects type 'int', but argument 5 has type 'long unsigned int'

Note that in

#define hweight8(w)  (__builtin_constant_p(w) ? __const_hweight8(w)  : __arch_hweight8(w))

__arch_hweight*() still returns unsigned int while __const_hweight*()
returns unsigned long.  This can't be good, can it?

-- 
~Randy