* Re: [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness. [not found] <a09512c8526b46759669d0b879144563@AcuMS.aculab.com> @ 2023-07-25 18:33 ` kernel test robot 2023-07-26 9:19 ` David Laight 0 siblings, 1 reply; 4+ messages in thread From: kernel test robot @ 2023-07-25 18:33 UTC (permalink / raw) To: David Laight, 'linux-kernel@vger.kernel.org', 'Andy Shevchenko', 'Andrew Morton', 'Matthew Wilcox (Oracle)', 'Christoph Hellwig', 'Jason A. Donenfeld' Cc: llvm, oe-kbuild-all, Linux Memory Management List Hi David, kernel test robot noticed the following build errors: [auto build test ERROR on akpm-mm/mm-everything] [also build test ERROR on linus/master] [cannot apply to next-20230725] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/David-Laight/minmax-Allow-min-max-clamp-if-the-arguments-have-the-same-signedness/20230725-204940 base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything patch link: https://lore.kernel.org/r/a09512c8526b46759669d0b879144563%40AcuMS.aculab.com patch subject: [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness. config: mips-randconfig-r016-20230725 (https://download.01.org/0day-ci/archive/20230726/202307260256.nzImScXA-lkp@intel.com/config) compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project.git 4a5ac14ee968ff0ad5d2cc1ffa0299048db4c88a) reproduce: (https://download.01.org/0day-ci/archive/20230726/202307260256.nzImScXA-lkp@intel.com/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@intel.com> | Closes: https://lore.kernel.org/oe-kbuild-all/202307260256.nzImScXA-lkp@intel.com/ 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 } | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 errors generated. -- >> drivers/irqchip/irq-mchp-eic.c:275:1: error: call to undeclared function '__typecheck'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 275 | IRQCHIP_MATCH("microchip,sama7g5-eic", mchp_eic_init) | ^ include/linux/irqchip.h:45:17: note: expanded from macro 'IRQCHIP_MATCH' 45 | .data = 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-mchp-eic.c:275:1: error: initializer element is not a compile-time constant 275 | IRQCHIP_MATCH("microchip,sama7g5-eic", mchp_eic_init) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/irqchip.h:45:17: note: expanded from macro 'IRQCHIP_MATCH' 45 | .data = typecheck_irq_init_cb(fn), }, | ^~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/irqchip.h:24:2: note: expanded from macro 'typecheck_irq_init_cb' 24 | (__typecheck(typecheck_irq_init_cb, &fn) ? fn : fn) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 errors generated. vim +/__typecheck +288 drivers/irqchip/irq-mips-cpu.c 0916b46962cbcac arch/mips/kernel/irq_cpu.c Gabor Juhos 2013-01-31 281 afe8dc254711b72 arch/mips/kernel/irq_cpu.c Andrew Bresticker 2014-09-18 282 int __init mips_cpu_irq_of_init(struct device_node *of_node, 0f84c305351c993 arch/mips/kernel/irq_cpu.c Andrew Bresticker 2014-09-18 283 struct device_node *parent) 0f84c305351c993 arch/mips/kernel/irq_cpu.c Andrew Bresticker 2014-09-18 284 { 0f84c305351c993 arch/mips/kernel/irq_cpu.c Andrew Bresticker 2014-09-18 285 __mips_cpu_irq_init(of_node); 0916b46962cbcac arch/mips/kernel/irq_cpu.c Gabor Juhos 2013-01-31 286 return 0; 0916b46962cbcac arch/mips/kernel/irq_cpu.c Gabor Juhos 2013-01-31 287 } 892b8cf06d8a1e7 drivers/irqchip/irq-mips-cpu.c Paul Burton 2015-05-24 @288 IRQCHIP_DECLARE(cpu_intc, "mti,cpu-interrupt-controller", mips_cpu_irq_of_init); -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki ^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness. 2023-07-25 18:33 ` [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness kernel test robot @ 2023-07-26 9:19 ` David Laight 2023-07-26 9:50 ` Marc Zyngier 0 siblings, 1 reply; 4+ messages in thread From: David Laight @ 2023-07-26 9:19 UTC (permalink / raw) To: 'kernel test robot', 'linux-kernel@vger.kernel.org', 'Andy Shevchenko', 'Andrew Morton', 'Matthew Wilcox (Oracle)', 'Christoph Hellwig', 'Jason A. Donenfeld' Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev, Linux Memory Management List, 'maz@kernel.org', Rob Herring > From: kernel test robot <lkp@intel.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) ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness. 2023-07-26 9:19 ` David Laight @ 2023-07-26 9:50 ` Marc Zyngier 2023-07-26 10:25 ` David Laight 0 siblings, 1 reply; 4+ messages in thread From: Marc Zyngier @ 2023-07-26 9:50 UTC (permalink / raw) To: David Laight Cc: 'kernel test robot', 'linux-kernel@vger.kernel.org', 'Andy Shevchenko', 'Andrew Morton', 'Matthew Wilcox (Oracle)', 'Christoph Hellwig', 'Jason A. Donenfeld', llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev, Linux Memory Management List, Rob Herring On Wed, 26 Jul 2023 10:19:48 +0100, David Laight <David.Laight@ACULAB.COM> wrote: > > > From: kernel test robot <lkp@intel.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. 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. ^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness. 2023-07-26 9:50 ` Marc Zyngier @ 2023-07-26 10:25 ` David Laight 0 siblings, 0 replies; 4+ messages in thread From: David Laight @ 2023-07-26 10:25 UTC (permalink / raw) To: 'Marc Zyngier' Cc: 'kernel test robot', 'linux-kernel@vger.kernel.org', 'Andy Shevchenko', 'Andrew Morton', 'Matthew Wilcox (Oracle)', 'Christoph Hellwig', 'Jason A. Donenfeld', llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev, Linux Memory Management List, Rob Herring From: Marc Zyngier > Sent: 26 July 2023 10:51 > > On Wed, 26 Jul 2023 10:19:48 +0100, > David Laight <David.Laight@ACULAB.COM> wrote: > > > > > From: kernel test robot <lkp@intel.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. > > 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. .. > > They are used in different contexts. See IRQCHIP_MATCH(). Ah, I was seeing the error in the expansion of IRQCHIP_DECLARE() which is doing the type check twice. It can just pass 'fn'. The cast NULL check does work. So IRQCHIP_MATCH() can use the simpler 'fn = (fn_type)NULL ? fn : fn' test that _OF_DECLARE_STUB() uses. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales) ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-07-26 10:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <a09512c8526b46759669d0b879144563@AcuMS.aculab.com>
2023-07-25 18:33 ` [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness kernel test robot
2023-07-26 9:19 ` David Laight
2023-07-26 9:50 ` Marc Zyngier
2023-07-26 10:25 ` David Laight
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox