[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6bed42e871e74e898b400a404ec6d142@AcuMS.aculab.com>
Date: Wed, 26 Jul 2023 09:19:48 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'kernel test robot' <lkp@...el.com>,
"'linux-kernel@...r.kernel.org'" <linux-kernel@...r.kernel.org>,
'Andy Shevchenko' <andriy.shevchenko@...ux.intel.com>,
'Andrew Morton' <akpm@...ux-foundation.org>,
"'Matthew Wilcox (Oracle)'" <willy@...radead.org>,
'Christoph Hellwig' <hch@...radead.org>,
"'Jason A. Donenfeld'" <Jason@...c4.com>
CC: "llvm@...ts.linux.dev" <llvm@...ts.linux.dev>,
"oe-kbuild-all@...ts.linux.dev" <oe-kbuild-all@...ts.linux.dev>,
"Linux Memory Management List" <linux-mm@...ck.org>,
"'maz@...nel.org'" <maz@...nel.org>, Rob Herring <robh@...nel.org>
Subject: RE: [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the
arguments have the same signedness.
> From: kernel test robot <lkp@...el.com>
> Sent: 25 July 2023 19:33
...
>
> All errors (new ones prefixed by >>):
>
> >> drivers/irqchip/irq-mips-cpu.c:288:1: error: call to undeclared function '__typecheck'; ISO C99 and
> later do not support implicit function declarations [-Wimplicit-function-declaration]
> 288 | IRQCHIP_DECLARE(cpu_intc, "mti,cpu-interrupt-controller", mips_cpu_irq_of_init);
> | ^
> include/linux/irqchip.h:37:38: note: expanded from macro 'IRQCHIP_DECLARE'
> 37 | OF_DECLARE_2(irqchip, name, compat, typecheck_irq_init_cb(fn))
> | ^
> include/linux/irqchip.h:24:3: note: expanded from macro 'typecheck_irq_init_cb'
> 24 | (__typecheck(typecheck_irq_init_cb, &fn) ? fn : fn)
> | ^
> >> drivers/irqchip/irq-mips-cpu.c:288:1: error: initializer element is not a compile-time constant
> 288 | IRQCHIP_DECLARE(cpu_intc, "mti,cpu-interrupt-controller", mips_cpu_irq_of_init);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/irqchip.h:37:2: note: expanded from macro 'IRQCHIP_DECLARE'
> 37 | OF_DECLARE_2(irqchip, name, compat, typecheck_irq_init_cb(fn))
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/of.h:1493:3: note: expanded from macro 'OF_DECLARE_2'
> 1493 | _OF_DECLARE(table, name, compat, fn, of_init_fn_2)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/of.h:1481:2: note: expanded from macro '_OF_DECLARE'
> 1481 | _OF_DECLARE_STUB(table, name, compat, fn, fn_type)
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/of.h:1470:16: note: expanded from macro '_OF_DECLARE_STUB'
> 1470 | .data = (fn == (fn_type)NULL) ? fn : fn }
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It looks like irqchip.h is using __typecheck() which is really
an internal part of the implementation of min() and max().
The patched version doesn't use it - hence the build fail.
I can re-instate it, but this all looks wrong to me.
The type of typecheck_irq_init_cb is the same as that of fn_type (although
they are defined separately).
Both headers seem to be testing the type - and it must match both.
So if the test in of.h worked the one in irqchip.h wouldn't have been added.
So I suspect it doesn't actually do anything - the RHS is NULL, the type
probably doesn't matter.
Possibly:
.data = {sizeof ((fn) == (fn_type)(fn)) ? fn : fn }
would actually generate the required compile-time error.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
Powered by blists - more mailing lists