Re: validating signed/unsigned comparisons with Coccinelle, was Re: [PATCH 0/3] A couple of CI fixes regarding the built-in add --patch
- From
Jeff King <peff@peff.net>
- Date
- Aug 30, 2022, 21:32 UTC
- Message-ID
- <Yw6B6OB5gJhPVn5/@coredump.intra.peff.net>
- In-Reply-To
- <73spp934-1q41-1123-41no-q2337954op92@tzk.qr>
On Tue, Aug 30, 2022 at 11:12:24PM +0200, Johannes Schindelin wrote:
Show 8 quoted lines
> On Tue, 30 Aug 2022, Phillip Wood wrote: > > > I wonder if they would be interested in fixing the parsing bug we found > > with Peff's UNUSED() series. > > Could you point me to the relevant mail? I am sure that I can come up with > an MCVE that will help them pinpoint the bug and fix it as quickly as they > did with this here bug.
It's the sub-thread starting here:
https://lore.kernel.org/git/220825.86ilmg4mil.gmgdl@evledraar.gmail.com/
I tried to put together a minimal example, which would be something like:
$ cat foo.c
void old_function(int);
void new_function(int);
#if defined(__GNUC__)
#define UNUSED(var) UNUSED_##var __attribute__((unused))
#else
#define UNUSED(var) UNUSED_##var
#endif
void foo(int UNUSED(bar), int x)
{
old_function(x);
}$ cat foo.cocci @@ expression E; @@ -old_function(E) +new_function(E)
but to my frustration, it actually works! If you add --verbose-parsing to the spatch command, you can see it complaining about some of the parsing. And it produces wrong outputs in the real-world with our actual unused.cocci file. I suspect the example semantic patch might just need to be a little more complicated.
-Peff