linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Laight <David.Laight@ACULAB.COM>
To: 'Linus Torvalds' <torvalds@linux-foundation.org>,
	Jiri Slaby <jirislaby@gmail.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	"Matthew Wilcox (Oracle)" <willy@infradead.org>,
	Christoph Hellwig <hch@infradead.org>,
	"Jason A. Donenfeld" <Jason@zx2c4.com>
Subject: RE: [PATCH next v4 0/5] minmax: Relax type checks in min() and max().
Date: Tue, 9 Jan 2024 09:35:21 +0000	[thread overview]
Message-ID: <53d06c12ebcf4a87b241ae31b81c3ea6@AcuMS.aculab.com> (raw)
In-Reply-To: <CAHk-=wjvM5KiQFpbPMPXH-DcvheNcPGj+ThNEJVm+QL6n05A8A@mail.gmail.com>

From: Linus Torvalds
> Sent: 08 January 2024 18:19
> 
> On Mon, 8 Jan 2024 at 03:46, Jiri Slaby <jirislaby@gmail.com> wrote:
> >
> >    CPP [M] drivers/media/pci/solo6x10/solo6x10-p2m.i
> > real    0m45,002s
> >
> > $ git revert 867046cc7027703f60a46339ffde91a1970f2901
> >    CPP [M] drivers/media/pci/solo6x10/solo6x10-p2m.i
> > real    0m11,132s
> >
> > $ git revert 4ead534fba42fc4fd41163297528d2aa731cd121
> >    CPP [M] drivers/media/pci/solo6x10/solo6x10-p2m.i
> > real    0m3,711s
> 
> Ouch. Yeah, that's unfortunate. There's a lot of nested nasty macro
> expansion there, but that timing is excessive.
> 
> Sparse actually complains about that file:
> 
>   drivers/media/pci/solo6x10/solo6x10-p2m.c:309:13: error: too long
> token expansion
>   drivers/media/pci/solo6x10/solo6x10-p2m.c:310:17: error: too long
> token expansion
> 
> and while that is a sparse limitation, it's still interesting. Having
> that file expand to 122M is not ok.
> 
> In this case, I suspect the right thing to do is to simply not use
> min()/max() in that header at all, but do something like

Replacing the max(a, min(b, c)) with clamp(b, a, c)
(I think that is the right order of the args)
would probably stop the complete explosion.

Then I'm pretty sure it shouldn't actually be nesting the two
defines.
The code really doesn't what to expand most of those very often.
In fact doing so once during init is probably the right thing to do.

That is true regardless of the implementation of min() and max().

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)

  parent reply	other threads:[~2024-01-09  9:35 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-18  8:14 [PATCH next v4 0/5] minmax: Relax type checks in min() and max() David Laight
2023-09-18  8:16 ` [PATCH next v4 1/5] minmax: Add umin(a, b) and umax(a, b) David Laight
2024-01-12 12:49   ` Dan Carpenter
2024-01-12 13:40     ` David Laight
2024-01-12 14:03       ` Dan Carpenter
2024-01-12 14:26         ` David Laight
2024-01-18 10:30           ` Dan Carpenter
2023-09-18  8:17 ` [PATCH next v4 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness David Laight
2023-09-18  8:17 ` [PATCH next v4 3/5] minmax: Fix indentation of __cmp_once() and __clamp_once() David Laight
2023-09-18  8:18 ` [PATCH next v4 4/5] minmax: Allow comparisons of 'int' against 'unsigned char/short' David Laight
2023-09-18  8:19 ` [PATCH next v4 5/5] minmax: Relax check to allow comparison between unsigned arguments and signed constants David Laight
2023-09-27 17:30 ` [PATCH next v4 0/5] minmax: Relax type checks in min() and max() Andrew Morton
2023-09-28  8:10   ` David Laight
2024-01-08 11:46 ` Jiri Slaby
2024-01-08 13:34   ` David Laight
2024-01-08 18:19   ` Linus Torvalds
2024-01-08 20:04     ` Linus Torvalds
2024-01-08 21:11       ` Linus Torvalds
2024-01-09  0:39         ` [PATCH next v4 0/5] minmax: Relax type checks in min() and max().^[[C John Stoffel
2024-01-09  6:54         ` [PATCH next v4 0/5] minmax: Relax type checks in min() and max() Jiri Slaby
2024-01-10  6:17         ` Stephen Rothwell
2024-01-10  9:03           ` David Laight
2024-01-10 19:35           ` Linus Torvalds
2024-01-10 22:58             ` David Laight
2024-01-20 21:33               ` Linus Torvalds
2024-01-21 22:18                 ` David Laight
2024-01-09  9:35     ` David Laight [this message]
2024-01-09  9:41     ` David Laight
2024-01-09 12:09     ` Kalle Valo
2024-01-19  7:14     ` Jiri Slaby
2024-01-19  8:23       ` Hans Verkuil
2024-01-19  9:14       ` David Laight
2024-01-12  9:13 ` Dan Carpenter
2024-01-12 12:16   ` David Laight
2024-01-12 12:40     ` Dan Carpenter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53d06c12ebcf4a87b241ae31b81c3ea6@AcuMS.aculab.com \
    --to=david.laight@aculab.com \
    --cc=Jason@zx2c4.com \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=hch@infradead.org \
    --cc=jirislaby@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).