Re: git: b40c0db6f6d6 - main - Patch up __diagused for when only one of INVARIANTS or WITNESS is defined

From: Mateusz Guzik <mjguzik_at_gmail.com>
Date: Wed, 27 Apr 2022 15:50:51 UTC
On 4/27/22, John Baldwin <jhb@freebsd.org> wrote:
> On 4/27/22 6:30 AM, Mateusz Guzik wrote:
>> The branch main has been updated by mjg:
>>
>> URL:
>> https://cgit.FreeBSD.org/src/commit/?id=b40c0db6f6d61ed594118d81dc691b9263a7e4d7
>>
>> commit b40c0db6f6d61ed594118d81dc691b9263a7e4d7
>> Author:     Mateusz Guzik <mjg@FreeBSD.org>
>> AuthorDate: 2022-04-27 13:29:12 +0000
>> Commit:     Mateusz Guzik <mjg@FreeBSD.org>
>> CommitDate: 2022-04-27 13:29:12 +0000
>>
>>      Patch up __diagused for when only one of INVARIANTS or WITNESS is
>> defined
>>
>>      Reported by:    John F Carr<jfc@mit.edu>
>> ---
>>   sys/sys/systm.h | 9 ++++++---
>>   1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/sys/sys/systm.h b/sys/sys/systm.h
>> index f2ffa7e6b815..6ca9ee886562 100644
>> --- a/sys/sys/systm.h
>> +++ b/sys/sys/systm.h
>> @@ -554,10 +554,13 @@ void _gone_in_dev(device_t dev, int major, const
>> char *msg);
>>   #define gone_in(major, msg)		__gone_ok(major, msg) _gone_in(major, msg)
>>   #define gone_in_dev(dev, major, msg)	__gone_ok(major, msg)
>> _gone_in_dev(dev, major, msg)
>>
>> -#if defined(INVARIANTS) || defined(WITNESS)
>> -#define	__diagused
>> -#else
>> +#if !defined(INVARIANTS) && !defined(WITNESS)
>> +#define	__diagused	__unused
>> +#elif ((defined(INVARIANTS) && !defined(WITNESS)) || \
>> +	(!defined(INVARIANTS) && defined(WITNESS)))
>>   #define	__diagused	__unused
>> +#else
>> +#define	__diagused
>>   #endif
>
> Hmm, could this just be:
>
> #if defined(INVARIANTS) && defined(WITNESS)
> #define __diagused
> #else
> #define __diagused __unused
> #endif
>

it does boil down to it and if you want to make the change I'm not
going to stand in the way, but then imo it should get a comment that
there is no dedicated macro for invariants or witness only so some
warnings are possibly silenced when they should not be

however, the point here is that the case of only one of these being
defined is distinct from the rest and may warrant special treatment. I
wanted to preserve the distinction in the, arguably hairy,
conditional.

-- 
Mateusz Guzik <mjguzik gmail.com>