On Wed, 26 Jul 2023 10:19:48 +0100, David Laight <David.Laight@xxxxxxxxxx> wrote: > > > From: kernel test robot <lkp@xxxxxxxxx> > > 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. Please see f1985002839a ("irqchip: Provide stronger type checking for IRQCHIP_MATCH/IRQCHIP_DECLARE") for the rationale. Given that this has uncovered a number of bugs, I'm not letting this go without an equivalent replacement. > 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. They are used in different contexts. See IRQCHIP_MATCH(). M. -- Without deviation from the norm, progress is not possible.