Re: [PATCH] docs: add extra integer types to printk-formats

From: Matthew Wilcox
Date: Tue Mar 05 2019 - 15:07:48 EST


On Tue, Mar 05, 2019 at 11:59:30AM -0800, Joe Perches wrote:
> Many of the -Wformat warnings are bogus too.
>
> There's nothing wrong with using %x for a unsigned int
> of less than long size. (u8/u16)

I believe you to be incorrect.

6.5.2.2 Function calls

7 If the expression that denotes the called function has a type that does
include a prototype, the arguments are implicitly converted, as if by
assignment, to the types of the corresponding parameters, taking the
type of each parameter to be the unqualified version of its declared
type. The ellipsis notation in a function prototype declarator causes
argument type conversion to stop after the last declared parameter. The
default argument promotions are performed on trailing arguments.

I could define a calling convention for my CPU which says to pack u8s
and u16s as tightly as possible in registers (or on the stack), rather
than the prevailing calling convention of having each argument take up
at least one register-sized slot.